想要第三个按键控制数码管,让数码管60s倒计时
----
需要楼主提供:《数码管60s倒计时》的程序。
增加一个控制按键,不难。
难的是,符合你的显示电路的显示程序。
你不提供这段程序,按键,加在何处?
;p30 p31 p32 p33 是接4个铵键 p34 p35 p36 p37 是接4个LED, 输出低电平亮;按一下键亮,再按一下灭 4 个独立org 000main:jb p30,next1lcall t30msjb p30,next1jnb p30,$cpl p34next1:jb p31,next2lcall t30msjb p31,next2jnb p31,$cpl p35next2:jb p32,next3lcall t30msjb p32,next3jnb p32,$cpl p36next3:jb p33,next4lcall t30msjb p33,next4jnb p33,$cpl p37next4: sjmp main t30ms:mov r1,#60t30x:djnz r0,$djnz r1,t30xret end
以前回答过这样的问题。
和本次稍有区别是:以前是用“两个独立按键控制”,启动和暂停,用一个按键控制。
现在,按照楼主的要求,进行了改动,程序如下。
//下面是00-99秒计数的语言C程序。
#include<reg52h>
#include<intrinsh>
unsigned char i, j;
unsigned char code table[] = {
0xc0, 0xf9, 0xa4, 0xb0, 0x99,
0x92, 0x82, 0xf8, 0x80, 0x90
};
sbit QI_DONG = P1^1;
sbit TING_ZH = P1^2;
sbit QING_LY = P1^3;
bit k;
//---------------------------------------------
void Delay_1ms(unsigned int x)
{
unsigned int i, j;
for(i = 0; i < x; i++) for(j = 0; j <= 148; j++);
}
//---------------------------------------------
void main( )
{
TMOD = 0x01; //;T0定时方式1
TH0 = (65536-50000) / 256; //;50ms@12MHz
TL0 = (65536-50000) % 256;
TR0 = 1; //;定时器初始化结束
ET0 = 1; //;开启定时中断
EX0 = 1;
EX1 = 1;
EA = 1;
i = 0;
j = 0;
P0 = 0xC0;
P2 = 0xC0;
while(1) {
if (QI_DONG == 0) {
Delay_1ms(10); while(QI_DONG == 0); k = 1;
}
if (TING_ZH == 0) {
Delay_1ms(10); while(TING_ZH == 0); k = 0;
}
if (QING_LY == 0) {
Delay_1ms(10); while(QING_LY == 0);
i = 0; j = 0; P0 = 0xC0; P2 = 0xC0;
}
}
}
//---------------------------------------------
void timer0(void) interrupt 1
{
TL0 = (65536-50000) % 256;
TH0 = (65536-50000) / 256; //;50ms@12MHz
if (k) {
j++;
if (j == 20) {
j = 0;
i++;
if (i == 100) i = 0;
P0 = table[i / 10];
P2 = table[i % 10];
}
}
}
//---------------------------------------------
本程序,经过了PROTEUS检验,截屏如下图。
以上就是关于C51单片机把两个独立按键控制流水灯的程序变成三个按键控制怎么改全部的内容,包括:C51单片机把两个独立按键控制流水灯的程序变成三个按键控制怎么改、急求:使用四个独立按键控制四个LED灯亮灭的单片机汇编程序、倾家荡产求单片机C语言程序:0~99秒计数器;三个独立按键控制,P1.1开始 P1.2暂停P1.3清零 2个数码管显示等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)