以下是本人写的,错误指出请多多指正
;cb to 10m radio pll
;cpu atmel 89c2051
;pll motorola mc145170
;ch 70
;ft :29000khz-29700khz
; **bg7ydo diy at 2006/11/03**
;**********************************************
k_u equ p3.0
k_d equ p3.1
ptt equ p3.2
pll_d equ p3.5
pll_clk equ p3.3
pll_enb equ p3.4
ch equ 40h
r_h equ 41h
r_l equ 42h
t_h equ 43h
t_l equ 44h
ch1 equ 45h
ch2 equ 46h
led1 equ 47h
led2 equ 48h
;______________________________________________
org 0000h
sjmp start
org 0050h
start:
mov p1,#00h
clr p3.7
jnb k_u,start
jnb k_d,start
jnb ptt,start
lcall delay
;*************************************
;mc145170 ready updata
;c din
mov a,#60h
setb pll_enb
clr pll_d
clr pll_clk
clr c
clr pll_enb
mov r3,#08h
lcall updata
clr c
clr pll_d
clr pll_clk
nop
setb pll_enb
;r din
mov r3,#07h
mov a,#08h
rl a
clr pll_enb
lcall updata
mov a,#00h
mov r3,#08h
lcall updata
clr c
clr pll_clk
setb pll_enb
mov t_h,#17h
mov r_h,#0eh
mov ch,#0ah
mov a,ch
mov b,#10
div ab
mov led1,b
add a,#5
mov led2,a
mov a,led2
mov dptr,#display
movc a,@a+dptr
setb p3.7
mov p1,a
clr p1.7
lcall delay1
lcall delay1
mov a,led1
mov dptr,#display
movc a,@a+dptr
mov p1,a
clr p3.7
lcall delay1
;rx on
mov a,#0eh
clr pll_enb
mov r3,#08h
lcall updata
mov a,#0c4h
mov r3,#08h
lcall updata
setb pll_enb
clr pll_clk
clr pll_d
mov a,ch
;rl a
add a,#0bh
mov t_l,a
mov a,ch
rl a
add a,#4ch
mov r_l,a
main:
jnb k_u,k_1
jnb k_d,k_2
jb ptt,k_3
;.............................................
;display start ch60
mov a,led2
mov dptr,#display
movc a,@a+dptr
setb p3.7
mov p1,a
clr p1.7
lcall delay1
lcall delay1
mov a,led1
mov dptr,#display
movc a,@a+dptr
mov p1,a
clr p3.7
lcall delay1
sjmp main
k_1: ;ch dn
lcall delay
jnb k_u,$
mov a,ch
inc a
cjne a,#14h,k_4
mov a,#00h
sjmp k_4
k_2: ;ch up
lcall delay
jnb k_d,$
mov a,ch
clr c
subb a,#1
jnc k_4
mov a,#14h
sjmp k_4
k_3: ;ptt on
mov a,t_h
clr pll_enb
mov r3,#08h
lcall updata
mov a,t_l
mov r3,#08h
lcall updata
setb pll_enb
k_31:
;消除发射时显示不正常;
mov a,led2
mov dptr,#display
movc a,@a+dptr
setb p3.7
mov p1,a
clr p1.7
lcall delay1
lcall delay1
mov a,led1
mov dptr,#display
movc a,@a+dptr
mov p1,a
clr p3.7
lcall delay1
jb ptt,k_31
;松开ptt后打开rx
mov a,r_h
clr pll_enb
mov r3,#08h
lcall updata
mov a,r_l
mov r3,#08h
lcall updata
setb pll_enb
ljmp main
k_4:
mov a,ch
rl a
add a,#0bh
mov t_l,a
mov a,ch
rl a
add a,#4ch
mov r_l,a
;rx on after ch setup
mov a,r_h
clr pll_enb
mov r3,#08h
lcall updata
mov a,r_l
mov r3,#08h
lcall updata
setb pll_enb
mov a,ch
mov b,#10
div ab
mov led1,b
add a,#5
mov led2,a
ajmp main
updata:
rlc a
mov pll_d,c
nop
setb pll_clk
nop
nop
clr pll_clk
nop
nop
djnz r3,updata
ret
display:
db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
delay:
mov r3,#255
dly:
mov r4,#255
nop
nop
nop
nop
djnz r4,$
djnz r3,dly
ret
delay1:
mov r3,#10
dly1:
mov r4,#10
djnz r4,$
djnz r3,dly
ret
end