用单片机汇编语言编写60秒计时器!

用单片机汇编语言编写60秒计时器 ,

;数码管段选接P1口,位选接P2.0和P2.1,
;采用定时器T1定时10ms,60H为1s计数单元,计数100次为1s ORG 0000H ;程序从0地址开始
LJMP MAIN ;跳到MAIN处执行
ORG 001BH ;定时器T1
LJMP TIME1
ORG 0030H
MAIN:MOV TMOD,#01H ;设置T1工作在模式1
MOV TH1,#068H ;赋初值,定时10ms
MOV TL1,#0F0H
MOV IE,#88H ;开CPU中断,开定时器1中断
SETB TR1 ;启动T1定时器工作
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 P1,A ;由P1口输出A的内容
SETB P2.0 ;置位P2.0
CLR P2.0 ;清零P2.0

MOV A,B
MOVC A,@A+DPTR ;根据A的值取出编码表中的编码
MOV P1,A ;由P1口输出A的内容
SETB P2.1 ;置位P2.1
CLR P2.1 ;清零P2.1
JNB 4FH,DISPLAY ;判断1秒时间是否到,没有到,则跳转到DIAPLAY处
CLR 4FH ;1秒到,清4FH
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,否则跳转TT处
MOV R3,#0 ;R3为60,则给R3赋0
TT:RETITAB: ;编码表
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;编码
END ;程序结束
温馨提示:内容为网友见解,仅供参考
无其他回答

用单片机汇编语言编写60秒计时器!
;采用定时器T1定时10ms,60H为1s计数单元,计数100次为1s ORG 0000H ;程序从0地址开始 LJMP MAIN ;跳到MAIN处执行 ORG 001BH ;定时器T1 LJMP TIME1 ORG 0030H MAIN:MOV TMOD,#01H ;设置T1工作在模式1 MOV TH1,#068H ;赋初值,定时10ms MOV TL1,#0F0H MOV IE,#88H ...

单片机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秒倒计时
我是用汇编语言做的,如果显示的速度不理想 你改下延时程序段的数值就OK了,课堂上这个60S倒计时的课题用了很多方法做过 ORG 0000H LJMP START ORG 0100H START:MOV R0, #59 MOV DPTR, #TABLE LOOP:LCALL DISPLAY DEC R0 CJNE R0,#0,LOOP JMP START DISPLAY:MOV ...

题目。写出一个60s倒计时的汇编语言
SEC_60: db 0;60秒计时寄存器 SEC_1: db 0 Stop_Flag:db 0 data ends ;数据段结束 code segment 'code' ;定义代码段 asuume cs:code,ds:data,ss:stack ;确定CS\/DS\/SS指向的逻辑段 start: mov ax,ss mov sp,ax mov ax,data ;设置数据段的段地址DS mov ...

任务要求 用数码管显示60秒的秒表设计(单片机AT89C51)
2.用定时计数器定时,用按键控制启停。--刚开机时,是启动,还是停止?3.若启动后计时没到60秒,按键停止后,则重新计时。--按键停止后,立即就重新计时?--是不是保持显示,等待再次按键,再重新计时?--否则,按键的作用,就不是停止了,而是重新计时了。4.要求用汇编语言 --这个可以办...

编写一个汇编程序实现延时60US(12M晶振普通51单片机)
60us延时比较短,可以采用软件延时,子程序如下:DELAY:MOV R7,#28 (此指令费时1us)NOP (空指令费时1us)DJNZ R7,$ (此指令费时2us,循环28次,共费时28×2=56us)RET (此指令费时2us)绝对精确60us,其它答案均没有考虑RET指令所需时间 ...

求C51单片机汇编语言控制两位数码管倒计时程序,最好能说明下思路_百度...
MOV R4,#60 ;60S开始倒计时 SETBEA SETBET0 SETB TR0 MOV DPTR,#TABLE MAIN1:ACALLDISP AJMPMAIN1 DISP:MOV A,R4 MOV B,#10 DIV AB ;当前值除以10 MOV 20H,A ;得出的商送给十位 MOV 21H,B ;得出的余数送给个位 MOV A,20H ;十位显示 MOVC A,@A+DPTR ...

求一个用汇编语言编写一个8051单片机的时钟程序(急急急啊)
MOV TMOD,#011H ; 定时器0, 1工作模式1, 16位定时方式 MOV TH0,#0FCH MOV TL0,#017H MOV TH1,#0DCH CLR A MOV TL1,A MOV HOUR,#12 ;CLR A ;MOV MIN,A MOV SEC,A MOV SEC100,A MOV A,HOUR MOV B,#10 DIV AB MOV DPTR,#...

单片机定时器中断实验 程序(汇编语言)不要c语言的
;第一秒钟L0,L2亮,第二秒钟L1,L3亮,第三秒L4,L6亮,第四秒钟L5,L7亮,;第五秒L0,L2,L4,L6亮,第六秒钟,L1,L3,L5,L7亮,第七秒钟八个二极管全亮,第八秒钟全灭.MOV 30H, #11111010B MOV 31H, #11110101B MOV 32H, #10101111B MOV 33H, #01011111B MOV 34H, #...

单片机汇编语言程序,我想写一个循环点亮的LED,然后用外部中断0接到一个...
LJMP EXT0 ;外部中断0,控制流水灯启停 ORG 000BH LJMP T0ISR ;定时0控制流水灯循环点亮 ORG 0030H MAIN:MOV TMOD,#01H ;设置定时器0工作模式 MOV TH0,#HIGH(65536-60000) ;60毫秒定时 MOV TL0,#LOW(65536-60000)SETB ET0 SETB EA MOV A,#0FEH ;LED等初始化 MOV P0,...

相似回答