单片机计数器程序??????

来源:百度知道 编辑:UC知道 时间:2024/06/10 21:43:23
分数我会给300分,我目前只有20,剩下的我会把每天的10分给你!用AT89C51实现定时器后(这里我已经成功了),还要实现计数器的功能(按一下按钮,LED加一。这里做不出来),且它们相互独立互不干扰!。。。。。这是我的程序: dspbuf equ 30h
sec equ 40h
min equ 41h
msec equ 42h
org 0000h
ajmp main
org 0003h
clr ex0
reti
org 000bh
mov th0,#high(65536-10000)
mov tl0,#low(65536-10000)
ajmp toint
org 0013h
clr ex1
reti
org 001bh
clr et1
reti
org 0023h
clr es
reti
main:
acall toinit
acall clkinit
mov min,#0
mov sec,#0
setb et0
setb ex1
setb ea
mainloop:
mov a,min
cjne a,#0,lp6
mov a,sec
cjne a,#0,lp6
mov a,msec
cjne a,#0,lp6
clr tr0
lp6: nop
acall readkey
acall chaizi
acall display
acall anykey
ajmp mainloop
chaizi:
mov r0, #dspbuf
mov a,

这个程序,还是很不错的;只是有些地方繁杂了一些。
修改如下:
SEC EQU 40H
MIN EQU 41H
MSEC EQU 42H
DSPBUF EQU 50H

ORG 0000H
AJMP MAIN

ORG 0003H
CLR EX0
RETI

ORG 000BH
AJMP TOINT

ORG 0013H
CLR EX1
RETI
ORG 001BH
CLR ET1
RETI
ORG 0023H
CLR ES
RETI

MAIN:
MOV TMOD,#00000001B
MOV TH0,#HIGH(65536-10000)
MOV TL0,#LOW(65536-10000)
SETB TR0
SETB ET0
SETB EX1
SETB EA
CLR A
MOV MIN, A
MOV SEC, A
MOV MSEC, A

MAINLOOP:
NOP
ACALL CHAIZI
ACALL DISPLAY
ACALL READKEY
AJMP MAINLOOP

CHAIZI:
MOV R0, #DSPBUF
MOV A, SEC
ACALL HEXTOBCD
MOV A, MIN
ACALL HEXTOBCD
MOV A, MSEC