- snjk
-
试试看
org 0000H
jmp Start
org 000bh
jmp TIMER0
Start:
call INIT
mov count,#20
mov dcount,#99h
mov a,dcount
anl a,#0fh
mov ge_buf,a
mov a,dcount
swap a
anl a,#0fh
mov shi_buf,a
loop:
call key_scan
jmp loop
key_scan:
jb k1,chk_tr0
call delay
jb k1,chk_tr0
clr tr0 ;
chk_tr0:
jb tr0,chk_k4
chk_k2:
jb k2,chk_k3
call delay;
jb k2,chk_k3
mov a,dcount
cjne a,#99h,not_to_99
jmp chk_k3
not_to_99:
mov a,ge_buf
cjne a,#09h,ge_not_9
mov a,shi_buf
cjne a,#09h,shi_not_9
jmp k2_end
shi_not_9:
inc shi_buf
mov ge_buf,#00h
call ge_shi_dcnt
jmp k2_end
ge_not_9:
inc ge_buf
call ge_shi_dcnt
k2_end:
call display
jnb k2,k2_end
chk_k3:
jb k3,chk_k4
call delay;
jb k3,chk_k4
call dcnt_shi_ge
mov a,ge_buf
cjne a,#00h,dec_ge
mov a,shi_buf
cjne a,#00h,dec_shi
mov dcount,#0h
jmp chk_k4
dec_ge:
dec ge_buf
call ge_shi_dcnt
jmp k3_end
dec_shi:
dec shi_buf
mov ge_buf,#09h
call ge_shi_dcnt
k3_end:
call display
jnb k3,k3_end
chk_k4:
jb k4,key_ret
call delay;
jb k4,key_ret
setb tr0
key_ret:
ret
delay:
mov r2,#20
D1:
mov r3,#100
D2:
djnz r3,D2
djnz r2,D1
ret
delay_1:
mov r2,#250
D1_1:
mov r3,#250
D2_1:
djnz r3,D2_1
djnz r2,D1_1
ret
INIT:
mov p0,#6FH ;
mov p2,#6Fh ;
mov p1,#0FFh ;
clr buz;
mov tmod,#01;
mov ie,#82h;
mov th0,#3Ch ;=(65536-50000)/256;
mov tl0,#00h ;=(65536-50000)%256;
setb tr0 ;
mov dcount,#99h ;
ret
TIMER0:
push acc
push psw
djnz count,D0
mov count,#20
call dcnt_shi_ge
mov a,ge_buf
cjne a,#00h,ge_not_0
mov a,shi_buf
cjne a,#00h,shi_not_0
jmp dcount_end
ge_not_0:
dec ge_buf
jmp not_end
shi_not_0:
dec shi_buf
mov ge_buf,#09
jmp not_end
dcount_end:
clr tr0;
jnb k1,k1_press;while(k1!=0)
mov P0,#00 ;
mov P2,#00 ;
setb buz;
call delay_1;
call delay_1;
call delay_1;
call delay_1;
mov P0,#0ffh;
mov P2,#0ffh;
clr buz;
call delay_1;
K1_press:
mov dcount,#99h;
call dcnt_shi_ge
not_end:
call display
call ge_shi_dcnt
D0:
mov th0,#3Ch
mov tl0,#0B0h
pop psw
pop acc
reti
display:
call ge_shi_dcnt
mov dptr,#duan
mov a,shi_buf
movc a,@a+dptr
mov p0,a
mov a,ge_buf
movc a,@a+dptr
mov p2,a
ret
dcnt_shi_ge:
mov a,dcount
anl a,#0fh
mov ge_buf,a
mov a,dcount
swap a
anl a,#0fh
mov shi_buf,a
ret
ge_shi_dcnt:
mov a,shi_buf
swap a
orl a,ge_buf
mov dcount,a
ret
k1 EQU P1.0;
k2 EQU P1.1;
k3 EQU P1.2;
k4 EQU P1.3;
buz EQU P3.0;
count EQU 20h
shi_buf EQU 21h
ge_buf EQU 22h
dcount EQU 23h
dicount EQU 24h
duan: DB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh,00h
END
- 豆豆staR
-
Keil里面编译一下,生成的文件里就有一个是汇编语言的
- 北有云溪
-
怎么复杂 边看VS的反汇编 边写
- FinCloud
-
有C了还翻译成汇编做什么?不麻烦吗?
- cloudcone
-
四个按键,控制什么?