89c52独立按键介绍?的主要设备主要包括数码管(用于显示倒计时时间和抢答成功的玩家人数)按钮(主持人按钮和玩家按钮)。使用单独的键盘,程序循环等待键输入。一旦玩家按下该键,即单片机输入端口为1(或0,自行设置)时,阻止其他键输入,并相应显示玩家号,倒计时结束无人抢答时将失效。
单片机编程实现0---20秒计时器,并用proteus软件设计硬件电路?
可以设置倒计时定时器的时间,并可以选择5/15/20/30/35/45/50分钟倒计时。倒计时时间由四个dip开关位的1/2/3控制,
第二个数字表示5分钟,第三个数字表示15分钟,第四个数字表示30分钟。
5/15/20/30/35/45/50分钟倒计时可以通过不同的组合产生。
P1.0端口的外接发光二极管为状态LED,在计时未开始时常亮,计时过程中闪烁。
K1是开始按钮,K2是停止按钮。
A_bitequ20h数码管一位数存储单元
B_bitequ21h数码管十位存储单元
Tempequ22h计数器值存储位置
引导初始化
Movp3和#0ffh初始化p3端口,并将其设置为高电平,用于按键输入。
MOVP0,#0FFH关闭数码管显示时间。
CLRP1.0点亮L:JBP3.6,$loop确定开始按钮K1是否按下?
呼叫延迟10延迟10毫秒触点抖动消除
JBP3.6,如果是干扰,START返回。
JNBP3.6,$等待按钮被释放。
读取dip开关的状态,并获得倒计时时间。
S:
MOVA,#0先清除A。
JBP2.0,A1判断dip开关第二位是否连接,如果连接则A加5。
添加一个,#5
A1:JBp2.1和A2判断dip开关第三位是否接通,如果接通则A加15。
加一个,#15
A2:JBp2.2和A3判断dip开关的第四位是否接通,如果接通则A加30。
加一个,#30
A3:·MOV临时雇员
此时,T:
CLRP2.4释放继电器1并开始计时(启动时继电器处于吸合状态)。
CLRP2.3释放继电器2并开始计时(启动时继电器处于吸合状态)。
MOV·R2#120
AB1:MOVR3,编号250
TIM:MOV一,临时转换成十进制数临时十六进制数。
Movb,#1010十进制/10=十进制
分部ab
Movb_bit,一个十在一个。
Mova_bit,b位在b中。
Movdptr,#numtab指定查找表的起始地址。
movr0,#4
dpl1:movR1,#250
Dplop:MOVA,A_BIT取个位数。
MOVCA,@ADPTR,用个位数查7段码。
Movp0,a发送7位代码。
Clrp2.7打开位显示。
呼叫延迟1显示1毫秒。
Setbp2.7关闭单元显示器以防止重影。
Mova,b_bit取十位数。
MOVC一个,@DPTR一个,检查十位数的7段码。
Movp0,a发送七段十位数的代码。
Clrp2.6打开十位数显示。
呼叫延迟1显示1毫秒。
Setbp2.6关闭十位数显示,防止重影。
插入一个程序段,判断计时过程中是否有按键输入。
C1:JBp3.6,B1
呼叫延迟10延迟10毫秒以消除抖动。
JBP3.6,C1
JNBP3.6,$等待按钮被释放。
AJMP集合1
B1:JBp3.7,M33
呼叫延迟10延迟10毫秒以消除抖动。
JBP3.7,B1
JNBP3.7,$等待按钮被释放。
AJMP结束
M33:DjNZR3,时间12ms循环执行250次,时间约为0.5秒。
CPLP1.0使LED每1秒闪烁一次。
Djnzr2,AB1循环在1分钟内执行120次。
十二月温度零下1度整整一分钟。
MOVA,临时
JNZ显示
判断TEMP的值是否为0?不为0的周期。
结束计时
overCHO15-@.comclrp1.0L:·MOV·R4,排名第二D1:MOVR5,编号248
DJNZR5,美元
D1DJNZR4
浸水使柔软
10毫秒延迟子程序
D:MOVR4,#20
D2:MOVR5,编号248
DJNZR5,美元
D2DJNZR4
浸水使柔软
实验板上7个数码管的0~9位的常用负显示码。
NUMTAB:DB0CFH,03H,5DH,5BH,93H,0DAH,0DEH,43H,0DFH,0DBH
结束