51 汇编语言编程:0.00~99.9 秒表
2016-01-25 12:06
309 查看
;设计一个 00.0 ~ 99.9 的秒表。
; P1.0 接一个按键,按一下开始,按第二下暂停,按第三下就清零。
电路图如下:
图片链接:http://xiangce.baidu.com/picture/detail/a25c9c6836dbfcba6faf52a902dfde5ded1931a6
做而论道为此编写的程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
;--------------------------------
MAIN: ;初始化
MOV DPTR, #TAB
MOV TMOD, #01H
MOV IE, #82H
MOV R2, #1
LP1:MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256
MOV R3, #2
MOV R4, #10
MOV R5, #10
MOV R6, #10
LP2:CLR TR0
M_LOOP: CALL DISP
JNB P1.0, KK ;检测到按键则转移
SJMP M_LOOP ;循环
;--------------------------------
KK: CALL DISP ;延时
JB P1.0, M_LOOP ;消抖
K1: CALL DISP
JNB P1.0, K1 ;等待释放
DJNZ R2, K2 ;按键次数
MOV R2, #3
SETB TR0 ;启动
SJMP M_LOOP
K2: CJNE R2, #1, LP2 ;暂停
SJMP LP1 ;清零
;--------------------------------
DISP: ;显示
MOV P3, #07H
MOV A, R4
MOVC A, @A + DPTR
MOV P2, A
CALL DELAY
MOV P3, #0BH
MOV A, R5
MOVC A, @A + DPTR
SETB ACC.7 ;小数点
MOV P2, A
CALL DELAY
MOV P3, #0DH
MOV A, R6
MOVC A, @A + DPTR
MOV P2, A
CALL DELAY
RET
TAB:
DB 0, 6FH, 7FH, 07H, 7DH, 6DH, 66H, 4FH, 5BH, 06H, 3FH
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;--------------------------------
T0_INT: ;50ms中断一次
MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256
DJNZ R3, EE
MOV R3, #2
DJNZ R4, EE ;修改各个时间变量
MOV R4, #10
DJNZ R5, EE
MOV R5, #10
DJNZ R6, EE
MOV R6, #10
EE:
RETI ;尽快退出中断程序
;--------------------------------
END
题目链接:http://zhidao.baidu.com/question/367960462141610244.html
提问者评价:谢谢!
; P1.0 接一个按键,按一下开始,按第二下暂停,按第三下就清零。
电路图如下:
图片链接:http://xiangce.baidu.com/picture/detail/a25c9c6836dbfcba6faf52a902dfde5ded1931a6
做而论道为此编写的程序如下:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0_INT
;--------------------------------
MAIN: ;初始化
MOV DPTR, #TAB
MOV TMOD, #01H
MOV IE, #82H
MOV R2, #1
LP1:MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256
MOV R3, #2
MOV R4, #10
MOV R5, #10
MOV R6, #10
LP2:CLR TR0
M_LOOP: CALL DISP
JNB P1.0, KK ;检测到按键则转移
SJMP M_LOOP ;循环
;--------------------------------
KK: CALL DISP ;延时
JB P1.0, M_LOOP ;消抖
K1: CALL DISP
JNB P1.0, K1 ;等待释放
DJNZ R2, K2 ;按键次数
MOV R2, #3
SETB TR0 ;启动
SJMP M_LOOP
K2: CJNE R2, #1, LP2 ;暂停
SJMP LP1 ;清零
;--------------------------------
DISP: ;显示
MOV P3, #07H
MOV A, R4
MOVC A, @A + DPTR
MOV P2, A
CALL DELAY
MOV P3, #0BH
MOV A, R5
MOVC A, @A + DPTR
SETB ACC.7 ;小数点
MOV P2, A
CALL DELAY
MOV P3, #0DH
MOV A, R6
MOVC A, @A + DPTR
MOV P2, A
CALL DELAY
RET
TAB:
DB 0, 6FH, 7FH, 07H, 7DH, 6DH, 66H, 4FH, 5BH, 06H, 3FH
DELAY:
DJNZ R7, $
DJNZ R7, $
RET
;--------------------------------
T0_INT: ;50ms中断一次
MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256
DJNZ R3, EE
MOV R3, #2
DJNZ R4, EE ;修改各个时间变量
MOV R4, #10
DJNZ R5, EE
MOV R5, #10
DJNZ R6, EE
MOV R6, #10
EE:
RETI ;尽快退出中断程序
;--------------------------------
END
题目链接:http://zhidao.baidu.com/question/367960462141610244.html
提问者评价:谢谢!
相关文章推荐
- spring mvc初始化及其原理
- 80x86 汇编语言编程:寻找水仙花数
- 80x86 汇编语言编程:用 “*” 显示一个三角形
- 51 单片机汇编语言编程:从 99 到 0 倒计时
- 80x86 汇编语言编程:BCD 码转二进制
- matlab---画图
- java bio nio aio
- 80x86 汇编语言编程:统计数组每个元素中 1 的个数
- 80x86 汇编语言编程:输入字符串,排序输出
- Asp.Net 文件加解密
- 80x86 汇编语言编程:求和
- Java SSL/TLS 通信demo
- 51 汇编语言编程:求最大、最小值的乘积
- 51 汇编语言编程:8个按键控制8个LED
- 80x86 汇编编程:输出一个矩阵的左下三角部分
- c++高精度模板
- C51 语言编程:单片机与 PC 串口通信程序
- 单片机汇编语言编程:对 A 中内容开平方
- 51单片机汇编编程:BCD 码与 BIN 数据的转换程序
- 51 汇编语言编程:8个按键控制8个LED