完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在做一个8路抢答器的课程设计,设置的抢答倒计时时间为30S,可是按下启动按钮之后大概要经过10S才由30秒变为29秒,然后再经过10S变成28秒,这是怎么回事啊?
下面是我的C语言源程序 #include #define uchar unsigned char #define uint unsigned int ***it k0=P1^0; ***it k1=P1^1; ***it k2=P1^2; ***it k3=P1^3; ***it k4=P1^4; ***it k5=P1^5; ***it k6=P1^6; ***it k7=P1^7; ***it we1a0=P2^0; ***it we1a1=P2^2; ***it we1a2=P2^3; ***it beep=P2^4; ***it ks=P3^0; ***it tz=P3^1; ***it jiayi=P3^4; ***it jianyi=P3^5; ***it fw=P3^6; uchar qiangdanum=0xff; uchar code table[]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar ge=0,shi=0; uint num,time=30; void display(); void kys(); void kys2(); void delay(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } void intial() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; } main() { intial(); while(1) { display(); kys(); if(TR0==1) { kys2(); } } } void kys2() { if(k0==0) { delay(5); if(k0==0) { qiangdanum=1; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k1==0) { delay(5); if(k1==0) { qiangdanum=2; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k2==0) { delay(5); if(k2==0) { qiangdanum=3; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k3==0) { delay(5); if(k3==0) { qiangdanum=4; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k4==0) { delay(5); if(k4==0) { qiangdanum=5; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k5==0) { delay(5); if(k5==0) { qiangdanum=6; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k6==0) { delay(5); if(k6==0) { qiangdanum=7; beep=1; delay(100); beep=0; TR0=0; time=60; } } if(k7==0) { delay(5); if(k7==0) { qiangdanum=8; beep=1; delay(100); beep=0; TR0=0; time=60; } } } void kys() { if(ks==0) { delay(5); if(ks==0) { TR0=1; } } if(tz==0) { delay(5); if(tz==0) TR0=0; } if(jiayi==0) { delay(5); if(jiayi==0) time++; while(!jiayi); } if(jianyi==0) { delay(5); if(jianyi==0) time--; while(!jianyi); } if(fw==0) { delay(5); if(fw==0) { time=30; qiangdanum=0xff; } } } void time0() interrupt 1 { num++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(num==200) { num=0; time--; if(time==0) { time=1; TR0; } } } void display(void) { shi=time/10; ge=time%10; P2=0xf7; P0=table[ge]; delay(5); P2=0xfb; P0=table[shi]; delay(5); P2=0xfe; P0=table[qiangdanum]; delay(5); } |
|
相关推荐
1个回答
|
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
298 浏览 1 评论
《DNESP32S3使用指南-IDF版_V1.6》第二十六章 INFRARED_RECEPTION实验
309 浏览 0 评论
826 浏览 0 评论
求助一下关于51系列单片机的Timer0的计时问题,TH0、TL0+1的时间是怎么算的?
1911 浏览 2 评论
【RA-Eco-RA4E2-64PIN-V1.0开发板试用】开箱+Keil环境搭建+点灯+点亮OLED
1427 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12032 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 12:16 , Processed in 0.569787 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号