?? a.plg
字號:
;-----------------------------------------------------------------------------
sdi bit P3.4
sck bit P3.5
nsel bit P3.6
sdo bit P3.7
workflag data 28h
comdata1 data 3dh
comdata2 data 3eh
bytedata data 3fh
rxdata data 40h ;16,接收數據寄存器組
revframe bit workflag.0
org 0000h
jmp main
;--------- main start --------------------------------
org 0030h
main:
mov P1,#0ffh
mov P3,#0cfh
call ia4320init
mainloop:
mov comdata1,#0ceh ;FIFO COMMAND
mov comdata2,#087h
call spisendcommand
mainloop1:
nop
nop
nop
clr sdi
clr nsel
jb sdo,revstart ;檢測是否收到數據
jmp mainloop
revstart: ;開始接收
mov r0,#40h
call fiforxframe
jnb revframe,mainloop
clr revframe
mov a,42h
swap a
mov P1,a
mov r6,#0fah
call delayn00us
mov r6,#0fah
call delayn00us
mov r6,#0fah
call delayn00us
mov P1,#0ffh
jmp mainloop
;--------- main end -------------------------------------
;--------- ia442xinit start -----------------------------
ia432xinit: ;IA432x初始化
mov comdata1,#080h ;配置命令
mov comdata2,#0fdh
call spisendcommand
mov comdata1,#082h ;電源管理
mov comdata2,#00ch
call spisendcommand
mov comdata1,#0a0h ;頻率設置
mov comdata2,#080h
call spisendcommand
mov comdata1,#0c6h ;波特率設置
mov comdata2,#023h
call spisendcommand
mov comdata1,#094h ;接收控制
mov comdata2,#083h
call spisendcommand
mov comdata1,#0c2h ;數據濾波
mov comdata2,#0ech
call spisendcommand
mov comdata1,#0cah ;FIFO COMMAND
mov comdata2,#081h
call spisendcommand
mov comdata1,#0c4h ;AFC COMMAND
mov comdata2,#0e7h
call spisendcommand
mov comdata1,#098h ;TXCTRL
mov comdata2,#040h
call spisendcommand
mov comdata1,#0ffh ;WAKEUP
mov comdata2,#0ffh
call spisendcommand
mov comdata1,#0c8h ;間歇工作
mov comdata2,#00eh
call spisendcommand
mov comdata1,#0c0h ;時鐘輸出
mov comdata2,#060h
call spisendcommand
ret
;--------- ia442xinit end ---------------------------------
;--------- fiforxframe start ------------------------------
fiforxframe: ;IA432x接收一幀數據
call spirevbyte
call spirevbyte
call spirevbyte
setb nsel
mov a,bytedata
mov @r0,a
cjne a,#0fah,fiforevret
clr sdi
clr nsel
jnb sdo,$
call spirevbyte
call spirevbyte
call spirevbyte
setb nsel
inc r0
mov a,bytedata
mov @r0,a
anl a,#0fh
mov r3,a
revnextbyte:
clr sdi
clr nsel
jnb sdo,$
call spirevbyte
call spirevbyte
call spirevbyte
setb nsel
inc r0
mov a,bytedata
mov @r0,a
djnz r3,revnextbyte
setb revframe
fiforevret:
setb nsel
mov comdata1,#0cah
mov comdata2,#081h
call spisendcommand
ret
;--------- fiforxframe end -------------------------------
;--------- spisendcommand start --------------------------
spisendcommand: ;寫指令
clr nsel
mov bytedata,comdata1
call spisendbyte
mov bytedata,comdata2
call spisendbyte
setb nsel
ret
;--------- spisendcommand end ----------------------------
;--------- spirevtwobyte start ---------------------------
spirevtwobyte: ;讀狀態
clr nsel
call spirevbyte
mov comdata1,bytedata
call spirevbyte
mov comdata2,bytedata
setb nsel
ret
mov r2,#08h
clr sdi
clr sck
clr a
revnextbit:
setb sck
mov c,sdo
rlc a
clr sck
djnz r2,revnextbit
mov bytedata,a
ret
;--
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -