//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
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuoyibo.cn 版权所有 湘ICP备2023022426号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务