单片机六十秒倒计时程序

用汇编语言写

第1个回答  2013-12-29
;数码管段选接P2口,位选接P3.0和P3.1,
;采用定时器T0定时10ms,60H为1s计数单元,计数100次为1sORG 0000H ;程序从0地址开始
LJMP MAIN ;跳到MAIN处执行
ORG 000BH ;定时器T0
LJMP TIME0
ORG 0030H
MAIN:MOV TMOD,#01H ;设置T0工作在模式1
MOV TH0,#0D8H ;赋初值,定时10ms
MOV TL0,#0F0H
MOV IE,#82H ;开CPU中断,开定时器0中断
MOV R3,#60
SETB TR0 ;启动T0定时器工作
MOV 60H,#100 ;给60H单元赋初值
CLR 4FH ;清零4FH单元
DISPLAY: ;显示子程序
MOV DPTR,#TAB ;DPTR指向编码表位置
MOV A,R3 ;将R3的内容复制到A
MOV B,#10
DIV AB ;A除B,商给A,余数给B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P2,A ;由P1口输出A的内容
CLR P3.0 ;清零P2.0
SETB P3.0 ;置位P2.0 MOV A,B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P2,A ;由P1口输出A的内容
CLR P3.1 ;清零P2.1
SETB P3.1 ;置位P2.1
JNB 4FH,DISPLAY ;判断1秒时间是否到,没有到,则跳转到DIAPLAY处
CLR 4FH ;1秒到,清4FH
LJMP DISPLAY ;调用显示子程序 TIME0:MOV TH0,#0D8H ;赋初值
MOV TL0,#0F0H
DJNZ 60H,TT ;60H单元自减1,判断是否为0,不为0则跳转到TT处
MOV 60H,#100 ;60H单元为0,则重新给其赋值100
SETB 4FH ;同时置位4FH单元
DEC R3 ;R3自加1
CJNE R3,#00H,TT ;判断R3是否为0,否则跳转TT处
CLR TR0
TT:RETI
TAB: ;编码表
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;共阴
END ;程序结束本回答被网友采纳
第2个回答  2013-12-29
这个我可以帮你设计的。不懂的联系我

请帮忙写一个程序:单片机控制液晶显示器60秒倒计时(C语言)
在单片机领域,使用C语言编写一个控制液晶显示器60秒倒计时的程序是一项有趣且实用的任务。程序的核心在于精确地控制液晶显示器的显示内容和倒计时的时间流逝。为了实现这一目标,我们需要熟悉单片机的基本编程技巧以及液晶显示器的接口控制。首先,我们需要定义几个关键的变量和宏定义。例如,使用uchar和uint...

单片机60秒倒计时程序怎么写啊!!!这个图的!!!急用啊!!!
ET0 = 1; TR0 = 1;while(1);}void Timer0Interrupt(void) interrupt 1{static unsigned int i = 0;static char time = 60; TH0 = 0xFC; TL0 = 0x66;P3 = table[time%10];P2 = table[time\/10];i++;if (i >= 1000){i = 0;time--;if (time < 0){time = ...

单片机60秒计时器的程序,用AT89C51实现
\/\/1:用AT89C51单片机的定时\/计数器T0产生一秒的 \/\/定时时间,作为秒计数时间,当一秒产生时,秒 \/\/计数加1,秒计数到60时,自动从0开始。单片机 \/\/晶振频率为12MHZ include<reg51.h> define uchar unsigned char define uint unsigned int uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6...

单片机 60秒倒计时
TABLE:DB 28H,7EH,0A4H,64H,72H,61H,21H,7CH,20H,60H END

用单片机汇编语言编写60秒计时器!
LJMP DISPLAY ;调用显示子程序 TIME1:MOV TH1,#068H ;赋初值 MOV TL1,#0F0H DJNZ 60H,TT ;60H单元自减1,判断是否为0,不为0则跳转到TT处 MOV 60H,#100 ;60H单元为0,则重新给其赋值100 SETB 4FH ;同时置位4FH单元 INC R3 ;R3自加1 CJNE R3,#60,TT ;判断R3...

单片机60秒计时报警器 求c程序 用AT89C51单片机的定时\/计数器T0产生...
second\/10];P2=dispcode[second%10];TR0=1;while(1){ if( second ==60){ TR0=0;P1=0x5F;delay();P1=0xFF;delay();} } } void t0(void) interrupt 1 using 0 { tcnt++;if(tcnt==4000){ tcnt=0;second++;P0=dispcode[second\/10];P2=dispcode[second%10];} } ...

计时到60秒归零的单片机程序
uchar miao=60; \/\/秒定义计数器 TMOD=0x10; \/\/设置T1为工作方式1 TH1=(65536-50000)\/256; \/\/设置T1计数初值高8位,定时时间50ms TL1=(65536-50000)%256; \/\/重新设置T1计数初值低8位 TR1=1; \/\/启动定时器开始计数 while(1){ disp(miao); \/\/显示秒计数器值 delay1s...

求一个简单的单片机用数码管显示计时60秒的C语言程序,程序一定要带有解...
uint sec; \/\/定义秒 uchar a; \/\/显示位选择 \/\/延时子程序 void d(uint i){uint j;for(;i>0;i--)for(j=110;j>0;j--);} \/\/显示函数 void prt(){ da[0]=sec\/10;\/\/十位存入显示缓存 da[1]=sec%10;\/\/各位存入显示缓存 P0=num[da[a]];\/\/将要显示的数据付给P0 d(5);\/\/...

小白求救,51单片机利用两个数码管实现60秒倒计时?
然后下面这个程序你可以参考一下。是符合我的硬件图的。include <reg51.h> unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};void show(unsigned char n);void delay(unsigned int k);void main(){ unsigned char i;int j;while(1){ for(i=60;j=60,i...

任务要求 用数码管显示60秒的秒表设计(单片机AT89C51)
1.要求从0-60秒计时,到60后LED发光,当从新计时是LED熄灭。--60,保持不变?--何时重新计时?2.用定时计数器定时,用按键控制启停。--刚开机时,是启动,还是停止?3.若启动后计时没到60秒,按键停止后,则重新计时。--按键停止后,立即就重新计时?--是不是保持显示,等待再次按键,...

相似回答