完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
程序实现,数码管显示2016开始,一秒加一,到2026时候,一秒加二;这里变量count,出来问题,我用了全局变量的形式,同时又在num()函数中用了局部变量的形式。按道理系统应该默认为局部变量。那为什么这样程序不能实现我要的结果呢。。有人问,为什么我又要用局部变量,又多此一举用全局变量,那是因为,diplay()函数需要count 。如果只用局部变量,系统语法会报错count未定义;
#include #define uint unsigned int #define uchar unsigned char uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e}; void display(uint); void delay(uint); void num(); uint count ; void main() { TMOD = 0x01; TH0 = (65535-46080)/256;//50ms TL0 = (65535-46080)%256; TR0 = 1; while(1) { num(); display(count); } } void display(uint count) { P1 = 0xfe; P0 = table[count/1000]; delay(2); P1 = 0xff; delay(2); P1 = 0xfd; P0 = table[count/100%10]; delay(2); P1 = 0xff; delay(2); P1 = 0xfb; P0 = table[count/10%10]; delay(2); P0 = 0xff; delay(2); P1 = 0xf7; P0 = table[count%10]; delay(2); P1 = 0xff; delay(2); } void num() { static uint i ; static uint count=2016; if(TF0 == 1) { TF0 = 0; TH0 = (65535-46080)/256;//50ms TL0 = (65535-46080)%256; i++; if(count <= 2026)//СÓÚ2026¶¼Ö´ÐÐÏÂÃæÒ»Ãë¼ÓÒ» { if(i == 20)//i¼ÓÒ»´ÎÊÇ50ms,¶þÊ®´ÎÊÇ1s { i = 0;//×¢Òâ¼ÓÍêÁËÒªÇåÀí count++; } } else //´óÓÚ2026¶¼Ö´ÐÐÏÂÃæÒ»Ãë¼Ó¶þ { if(i == 40) { i = 0; count++; } } } } void delay(uint z) { uint x,y; for(x = z;x>0;x--) for(y = 110;y>0;y--); } |
|
相关推荐
1个回答
|
|
首先我要建议楼主去看看局部变量和全局变量的定义,看完之后你会明白num函数里定义的static count 本身就是多此一举。你如此定义,程序肯定不对。只要直接在外部定义一个全部变量uint count =2016即可,这样定义的本身就是一个全部的变量而不是局部变量。还有楼主的总中断EA =1 没有开
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
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| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 17:47 , Processed in 0.556677 second(s), Total 69, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号