2236|17

9

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

程序出错求指教 [复制链接]

 

#in

用2个8421编码开关和stc15w201s做的9.9秒延时开关,下列程序不能正常运作,求各位指教

#include<reg52.h>

sbit timeup = P1^4; //延时完结输出

sbit flash = P1^5; //运行闪灯

unsigned char tt, nn, time;

void delay(unsigned char x)

{ unsigned char i, j; for(i = 0;i <= x; i++) for(j = 0; j <= 50; j++); }

void main()

{ unsigned char x, y,

timeup = 1;

TMOD = 0x01;

TR0 = 1;
IE = 0x82;
nn = 255;

time = 0;

TH0 = 0x3C;

TL0 = 0xB0;

x = P1;

x = ~x;

y = P3;

y = ~y;

time = y % 16 * 10 + x % 16;

while (1)

{ flash=0; delay(300); flash=1; delay(300); }

}

void b() interrupt 1

{ TH0 = 0x3C;

TL0 = 0xB0;

tt++;

if (tt == 10)

{

tt = 0; nn++;

if (nn == time)

{ TR0 = 0; timeup = 0;}

}

}

 

此帖出自51单片机论坛

最新回复

然后增大实参的数值大小。   详情 回复 发表于 2022-11-1 17:03
点赞 关注
 

回复
举报

6856

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

程序不能正常运作

应该有告警和出错提示提示

告警的内容?

 

此帖出自51单片机论坛
 
 
 

回复

7294

帖子

2

TA的资源

版主

板凳
 

感觉是延时太短了,【delay】函数的形参【unsigned char】类型最高到255,你赋值300等于是45。改成【unsigned int】吧。

此帖出自51单片机论坛
 
 
 

回复

7294

帖子

2

TA的资源

版主

4
 

而且我看延时函数,应该是ms级别的,所以你引脚接在LED上,应该是看不出闪烁现象的。延时加大一些试试。

此帖出自51单片机论坛
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

5
 
wangerxian 发表于 2022-10-30 10:02 感觉是延时太短了,【delay】函数的形参【unsigned char】类型最高到255,你赋值300等于是45。改成【unsign ...

这个程序用在stc89c52是正常,但用在stc15w201s就不行,都是51单片,就是搞不明

此帖出自51单片机论坛

点评

stc89c52和stc15w201s时钟频率不同的。  详情 回复 发表于 2022-10-31 09:42
一般分步调试 可以先把程序简化下,跑跑看 看是不是配置哪里出了问题  详情 回复 发表于 2022-10-30 17:55
 
 
 

回复

4949

帖子

19

TA的资源

版主

6
 
蚂蚁仔 发表于 2022-10-30 17:08 这个程序用在stc89c52是正常,但用在stc15w201s就不行,都是51单片,就是搞不明

一般分步调试

可以先把程序简化下,跑跑看 看是不是配置哪里出了问题

此帖出自51单片机论坛

点评

就是不能试出问题才会问  详情 回复 发表于 2022-10-30 20:58
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

7
 
吾妻思萌 发表于 2022-10-30 17:55 一般分步调试 可以先把程序简化下,跑跑看 看是不是配置哪里出了问题

就是不能试出问题才会问

此帖出自51单片机论坛
 
 
 

回复

114

帖子

6

TA的资源

一粒金砂(中级)

8
 

Timer 中斷部分先拿掉,先確定能閃LED燈.

你的程式沒用到timer中斷來控制燈號,卻做了一個timer中斷.

你真的確定你在做甚麼嗎???

此帖出自51单片机论坛
 
 
 

回复

7294

帖子

2

TA的资源

版主

9
 
蚂蚁仔 发表于 2022-10-30 17:08 这个程序用在stc89c52是正常,但用在stc15w201s就不行,都是51单片,就是搞不明

stc89c52和stc15w201s时钟频率不同的。

此帖出自51单片机论坛

点评

stc89c52和stc15w201s频率我都用12HMz,但在15w201就变了  详情 回复 发表于 2022-10-31 13:44
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

10
 
wangerxian 发表于 2022-10-31 09:42 stc89c52和stc15w201s时钟频率不同的。

stc89c52和stc15w201s频率我都用12HMz,但在15w201就变了

此帖出自51单片机论坛

点评

外部晶振频率和主控频率不等的,STC15主控频率比STC89高不少呢。  详情 回复 发表于 2022-10-31 15:33
 
 
 

回复

7294

帖子

2

TA的资源

版主

11
 
蚂蚁仔 发表于 2022-10-31 13:44 stc89c52和stc15w201s频率我都用12HMz,但在15w201就变了

外部晶振频率和主控频率不等的,STC15主控频率比STC89高不少呢。

此帖出自51单片机论坛

点评

我做的程序错了,频率只影响快慢,如stc15快了,理论延时9.9秒,应沒有9.9s就完成,现慢了近10倍,知道那里出错,能列出来让我学习吗    详情 回复 发表于 2022-10-31 18:46
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

12
 
wangerxian 发表于 2022-10-31 15:33 外部晶振频率和主控频率不等的,STC15主控频率比STC89高不少呢。

我做的程序错了,频率只影响快慢,如stc15快了,理论延时9.9秒,应沒有9.9s就完成,现慢了近10倍,知道那里出错,能列出来让我学习吗

 

此帖出自51单片机论坛

点评

延时是都改成short了吗 void delay(unsigned short x){       unsigned short i, j;       for(i = 0;i <= x; i++)     &n  详情 回复 发表于 2022-11-1 16:05
【void delay(unsigned char x)】这里的【unsigned char】最大255,你赋值300肯定就不对的。  详情 回复 发表于 2022-11-1 09:23
 
 
 

回复

7294

帖子

2

TA的资源

版主

13
 
蚂蚁仔 发表于 2022-10-31 18:46 我做的程序错了,频率只影响快慢,如stc15快了,理论延时9.9秒,应沒有9.9s就完成,现慢了近10倍,知道那 ...

【void delay(unsigned char x)】这里的【unsigned char】最大255,你赋值300肯定就不对的。

此帖出自51单片机论坛

点评

数改了程序还是一样错。  详情 回复 发表于 2022-11-1 13:59
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

14
 
wangerxian 发表于 2022-11-1 09:23 【void delay(unsigned char x)】这里的【unsigned char】最大255,你赋值300肯定就不对的。

数改了程序还是一样错。

此帖出自51单片机论坛

点评

然后增大实参的数值大小。  详情 回复 发表于 2022-11-1 17:03
要改形参的数据类型。  详情 回复 发表于 2022-11-1 17:03
 
 
 

回复

6111

帖子

4

TA的资源

版主

15
 
蚂蚁仔 发表于 2022-10-31 18:46 我做的程序错了,频率只影响快慢,如stc15快了,理论延时9.9秒,应沒有9.9s就完成,现慢了近10倍,知道那 ...

延时是都改成short了吗
void delay(unsigned short x){ 
     unsigned short i, j; 
     for(i = 0;i <= x; i++) 
          for(j = 0; j <= 50; j++);
}
 

此帖出自51单片机论坛
 
 
 

回复

7294

帖子

2

TA的资源

版主

16
 
蚂蚁仔 发表于 2022-11-1 13:59 数改了程序还是一样错。

要改形参的数据类型。

此帖出自51单片机论坛
 
 
 

回复

7294

帖子

2

TA的资源

版主

17
 
蚂蚁仔 发表于 2022-11-1 13:59 数改了程序还是一样错。

然后增大实参的数值大小。

此帖出自51单片机论坛

点评

先谢了!问题依旧,做可调9.9秒延时,变了99秒,待那位师傅指点  详情 回复 发表于 2022-11-1 18:53
 
 
 

回复

9

帖子

0

TA的资源

一粒金砂(中级)

18
 
wangerxian 发表于 2022-11-1 17:03 然后增大实参的数值大小。

先谢了!问题依旧,做可调9.9秒延时,变了99秒,待那位师傅指点

此帖出自51单片机论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表