;点击这里直接下载该示例源码
//本文链接:http://user.qzone.qq.com/361902503/blog/1217917322
//9488串口通信
;***********************dami 2006,8,8************************
;这里实现: 9位异步.(其他简单就不搞了)
;9488串口通信一 ,有关的寄存器有:P3CONL,UARTCON,UARTPND,BRDATAH,BRDATAL,UDATA ,还有关连
;波特率的寄存器(CLKCON).
;9488串口通信模式有三种:
;同步:一个时钟,一个数据
;8位异步
;9位异步
;9488校验和由用户设置校验方式(TB8,RB8),单片机自动产生校验位和校验,有校验是否正确标志返回给用户.
;如果用户不用校验,TB8,RB8可以作为一般的数据位传送.
;多机通信:有专用多机通信位
.INCLUDE"S3C9488.REG"
BRDATAH_M: .equ 14H
BRDATAL_M: .equ 15H
VECTOR 00H,F9488_INT
.ORG 003CH
DB 0FFH
DB 0FFH
DB 01100000B
DB 00000011B
.ORG 100H
DI
LD WDTCON,#10101010B
LD BTCON,#00001011B
;跟TIMEA/B没关系
LDCLKCON,#00011000B;时钟控制器不分频
LD SP,#0C0H
LD SYM,#0
LD OSCCON,#0
;LD OSCCON,#11110110b
;主从晶体及运行/停止
LD P3CONL,#01100100B ;P3CONL.7~5:011,P3CONL.4~2=001;
LD SYM,#1
LD BRDATAH_M,#0
LD BRDATAL_M,#19H
;4M 晶体频率不分频. 波特率9600
LD SYM,#0
LD UARTPND,#00100000b
;PEN=1
LD UARTCON,#10010010B
;模式2:10,MCE:0,TB8,RB8:00,RIE:接收中断允许,TIE发送中断不允许
;发送数据就直接写UART就行,但要
;MAIN1:
LD UDATA,#12H
CALL DEL2MS
LD UDATA,#34H
CALL DEL2MS ;发送数据,注意延时要够啊.用中断方式也行.我嫌麻烦就不搞了
; JP MAIN1
;
EI
MAIN:
NOP
NOP
LD R2,#22H
TM R2,#2
TM R2,#1
TM R2,#4
TM R2,#8
TM R2,#10H
TM R2,#20H
TM R2,#40H
TM R2,#80H
JP MAIN
F9488_INT:
TCM UARTPND,#2 ;UART接收中断产生标志
JP Z,UART_RECEIVE
LD UARTPND,#00100000b
;PEN=1
IRET
UART_RECEIVE:
TCM UARTPND,#10H
JP Z,UARTRE_PARITYERR
LD UARTPND,#00100000b
;PEN=1
;这里接收数据,我就不管了.
INC R1
NOP
NOP
IRET
UARTRE_PARITYERR: ;UART接收错误校验和标志
;错误处理
LD UARTPND,#00100000b
;PEN=1
NOP
IRET
DEL2MS:
LD R2,#250
DEL2MS1:
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
NOP
DEC R2
JP NZ,DEL2MS1
RET
.END
|
相关备注: |
http://user.qzone.qq.com/361902503/blog/1217917322 |
|