51单片机用计数器中断实现100以内的按键计数,汇编语言程序

之前提过这个问题,也有人给了答案,但是好像是错的,那个程序是地址循环加1,而且没有上限,所以就不要复制了。我要的是100内的按键计数,到一百自动清零,并且需要显示,比如按一次键计数器加1然后在P1口接的LED或是怎样会有显示。我不是很懂,只知道他最终的效果大概是按一次键,数码管显示的书就会加1这样。http://wenku.baidu.com/view/39bb44c29ec3d5bbfd0a74c6.html 就是这个效果,不过用的是汇编语言

试试下列程序:
ORG 0000H
JMP START
ORG 000BH
JMP T0_INT
;------------------------------
START:
MOV TMOD, #06H
MOV TH0, #255
MOV TL0, #255
MOV IE, #82H
SETB TR0
MOV R2, #0
MOV R3, #0
MOV DPTR, #TAB
;------------------------------
M_LOOP:
MOV A, R3
MOVC A, @A + DPTR
MOV P2, A
MOV A, R2
MOVC A, @A + DPTR
MOV P0, A
SJMP M_LOOP
;------------------------------
T0_INT:
JNB P3.4, T0_INT
INC R3
CJNE R3, #10, T0_END
MOV R3, #0
INC R2
CJNE R2, #10, T0_END
MOV R2, #0
T0_END:
RETI
;------------------------------
TAB: DB 0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f
;------------------------------
END追问

能给个注解么,我初学,看不太懂。谢谢了,还有这个程序是P0口和P2输出接数码管是么

追答

本程序所用的电路,就是楼主给出的链接的电路。
楼主先把这个程序仿真试试看。

写注解,也不知道该写些什么。
楼主有哪几句不明白,指出来最好。
要是都不明白,建议还是去多看看书。

追问

我把程序编进KEIL了,也显示出来了,是对的,谢谢你了。非常感谢。我们这个是期末作业,要算学分的。我还有同学也有关于单片机汇编语言的问题,都是类似的小设计,你能在帮帮忙么。我会在提一个问题到时候能麻烦你看看么。分还会有的。谢谢了

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-03-15
请尝试以下步骤:
ORG 0000H

JMP START

ORG 000BH

的JMP T0_INT

; --------------- ---------------

START:

MOV TMOD,#06H

MOV TH0,#255

MOV TL0,#255 /> MOV IE,#82H

SETB TR0

MOV R2,#0

MOV R3,#0

MOV DPTR,#TAB

; ----- -------------------------

M_LOOP:

MOV A,R3

MOVC A,@ A + DPTR MOV P2,A

MOV A,R2

MOVC A,@ A + DPTR

MOV P0,一个

SJMP M_LOOP

---- --------------------------

T0_INT:

JNB P3.4,T0_INT

INC R3 /> CJNE R3,#10,T0_END的

MOV R3,#0

INC R2

CJNE R2,#10,T0_END

MOV R2,#0

T0_END: RETI

; ------------------------------

TAB:DB 0x3f ,0X06,0x5b,0x4f,0x66,0x6d,0x7d,为0x07,到0x7f,0x6f

-------------------------------------------------------------------------------- ---
END
第2个回答  2012-12-15
COUNT EQU 30H
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP EX0ISR
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV SP,#5FH
MOV TMOD,#06H
MOV TH0,#0FFH
MOV TL0,#0FFH
SETB ET0
SETB EX0
SETB EA
SETB IT0
SETB TR0
MOV P0,#00H
MOV P2,#00H
MOV COUNT,#0
LOOP:
MOV DPTR,#LEDTAB
MOV A,COUNT
ADD A,#0
DA A
PUSH ACC
ANL A,#0F0H
SWAP A
MOVC A,@A+DPTR
MOV P0,A
POP ACC
ANL A,#0FH
MOVC A,@A+DPTR
MOV P2,A
SJMP LOOP
EX0ISR:
MOV COUNT,#0
RETI
T0ISR:
INC COUNT
MOV A,COUNT
CJNE A,#100,T0ISR1
MOV COUNT,#0
T0ISR1:
RETI
LEDTAB:
DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H
END追问

非常感谢你的回答,我也烧写了你的答案,是对的,但是他的我更能懂一些,而且他都帮我回答过两次了,上次都没给他满意答案,所以就选他了,真是不好意思啊

本回答被网友采纳
相似回答