完善资料让更多小伙伴认识你,还能领取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定义为静态局部变量或全局变量。
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
464 浏览 0 评论
478 浏览 1 评论
基于瑞萨FPB-RA4E2智能床头灯项目——1编译环境搭建与点亮驱动ws2812全彩LED
439 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-LCD显示图片编程示例之介绍mmap
994 浏览 0 评论
《DNESP32S3使用指南-IDF版_V1.6》第二章 常用的C语言知识点
1056 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11790 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 19:05 , Processed in 0.624553 second(s), Total 75, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号