永发信息网

单片机我有一个从00.0秒 按下P1.0开始的秒表,改成按一下P1.0启动秒表 按第二下P1.0 暂停 按第三下就清零

答案:3  悬赏:70  手机版
解决时间 2021-01-26 07:35
  • 提问者网友:沦陷
  • 2021-01-25 17:41
单片机我有一个从00.0秒 按下P1.0开始的秒表,改成按一下P1.0启动秒表 按第二下P1.0 暂停 按第三下就清零
最佳答案
  • 五星知识达人网友:有你哪都是故乡
  • 2021-01-25 19:06
;
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:
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追问为什么按的时候有延迟。。 然后 求你再帮我在加一个按键 按一下P1.1第一个数码管就加一!!追答有延迟。。。

楼主给出的程序,有几处没有写 "#"。

即,程序中的:
MOV TH0, (65536 - 50000) / 256
MOV TL0, (65536 - 50000) MOD 256
应该写成:
MOV TH0, #(65536 - 50000) / 256
MOV TL0, #(65536 - 50000) MOD 256

如果不写 "#",这个程序也是可以正常执行的。
在特定的晶振频率下,也可以正确的定时。
如果频率不准,就有延迟或加快的现象。

因为楼主并没有给定晶振频率,上面这么写,也是完全正确的。

如果写上了 "#",本程序就适合在 12MHz 晶振频率下工作。
----
再加一个按键,再增加功能,程序改动稍大,以后再说吧。
全部回答
  • 1楼网友:酒醒三更
  • 2021-01-25 19:57
你这有仿真图了,也有程序了,想问什么呀?追问怎么加用P1.0控制 开始 暂停 清零
  • 2楼网友:人類模型
  • 2021-01-25 19:50
设置一个变量,保存到一个RAM中,按键第一次让这个变量为1,第二次为2,第三次为3.
主程序中判断这个变量,如果为1,就启动,为2就停止,为3就清零。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯