1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
利用hc595驱动数码管做一个60s计时,在如图所示j=0处设置断点,在keil内调试sec显示60s,没有错误,但是在proteus内仿真,数码管每跳动一次的时间却接近3秒。程序与调试图如下:#include
#include #define uchar unsigned char #define uint unsigned int ***it SH_CP=P1^0; ***it DS=P1^1; ***it ST_CP=P1^2; uchar ge,shi; uchar code Duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar code Wei[]={0x7f,0xbf}; void time1init() { TMOD=0X10; TH1=(65536-50000)/256; //设置定时50ms初值 TL1=(65536-50000)%256; EA=1; ET1=1; TR1=1; } void time1() interrupt 3 { uchar i,j; i++; if(i==20) //重复50ms定时20次来达成定时1s { i=0; j++; ge=j%10; //个位 shi=j/10; //十位 if(j==60) //定时达到60s后清零重新计数 { j=0; //仿真中在此处设置断点sec显示60s,表示定时没有出错 } } TH1=(65536-50000)/256; TL1=(65536-50000)%256; } void send(uchar dat) //发送数据 { uchar t; for(t=0;t<8;t++) { dat<<=1; DS=CY; SH_CP=0; _nop_(); SH_CP=1; } } void display() { send(Duan[ge]); //传送个位的段码 send(Wei[0]); //传送个位的位码 ST_CP=0; //锁存 _nop_(); ST_CP=1; _nop_(); send(Duan[shi]); //传送十位的段码 send(Wei[1]); //传送十位的位码 ST_CP=0; //锁存 _nop_(); ST_CP=1; } void main() { time1init(); while(1) display(); }
|
|
相关推荐
2个回答
|
|
电路图里单片机的晶振频率是否和程序里的一致
|
|
|
|
楼主的中断程序中 i、j定义局部变量。由于每次进入中断程序时i、j被重新定义且值也不确定,故造成后续计算出错。必须将i、j定义为静态局部变量或全局变量。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
205 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1253 浏览 1 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
848 浏览 0 评论
【敏矽微ME32G070开发板免费体验】使用coremark测试敏矽微ME32G070 跑分
853 浏览 0 评论
【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED
1073 浏览 2 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12010 浏览 31 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 19:24 , Processed in 0.737451 second(s), Total 72, Slave 54 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号