| 
 
    
- 帖子
 - 219 
 - 主题
 - 115 
 - 精华
 - 2 
 - 积分
 - 480 
 - 在线时间
 - 285 小时 
 - 注册时间
 - 2007-5-27 
 
  | 
T2作为波特率控制 
UART_RXD 是硬中断0或1口,如果能进入中断,说明该线有一个起始位产生,进入中断后调 
用下面的接收程序。退出硬中断之前还需要将硬中断标志重新复位。 
UART_TXD 是任何其它IO即可。 
- UART_SEND:
 
 - PUSH IE
 
 - PUSH DPH
 
 - PUSH DPL
 
 - PUSH PSW
 
 - PUSH 00H
 
 - PUSH ACC
 
 - CLR EA
 
 - SETB UART_TXD ;START BIT
 
  
- MOV R0,A
 
 - CLR TR2 ;TR2置1,计数器2启动,时间计数启动。
 
 - MOV A,RCAP2L;计数器2重新装载值
 
 - MOV TL2,A ;置计数器2初值 ;T2需要重新装载
 
 - MOV A,DPH
 
 - MOV A,RCAP2H
 
 - MOV TH2,A
 
 - MOV A,R0
 
  
- SETB TR2 ;TR2置1,计数器
 
 - JNB TF2,$
 
 - CLR TF2
 
 - JNB TF2,$
 
 - CLR TF2
 
  
- CLR UART_TXD ;START BIT
 
 - JNB TF2,$
 
 - CLR TF2
 
 - JNB TF2,$
 
 - CLR TF2
 
  
- MOV R0,#08H
 
 - UART_SEND_LOOP:
 
 - RRC A
 
 - MOV UART_TXD,C ;8 BIT
 
 - JNB TF2,$
 
 - CLR TF2
 
 - JNB TF2,$
 
 - CLR TF2
 
 - DJNZ R0,UART_SEND_LOOP
 
  
- SETB UART_TXD ;END BIT
 
 - JNB TF2,$
 
 - CLR TF2
 
 - JNB TF2,$
 
 - CLR TF2
 
  
- POP ACC
 
 - POP 00H
 
 - POP PSW
 
 - POP DPL
 
 - POP DPH
 
 - POP IE
 
 - RET
 
  
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 - UART_REC:
 
 - PUSH IE
 
 - PUSH DPH
 
 - PUSH DPL
 
 - CLR EA
 
  
- CLR TR2 ;TR2置1,计数器2启动,时间计数启动。
 
 - MOV A,RCAP2L;计数器2重新装载值
 
 - MOV TL2,A ;置计数器2初值 ;T2需要重新装载
 
 - MOV A,DPH
 
 - MOV A,RCAP2H
 
 - MOV TH2,A
 
  
- JB UART_RXD,$ ;REC
 
 - SETB TR2 ;TR2置1,计数器2启动,时间计数启动。
 
 - JNB TF2,$
 
 - CLR TF2 ;0.5 BIT
 
  
- JNB TF2,$
 
 - CLR TF2 ;1 BIT
 
  
- JNB TF2,$
 
 - CLR TF2 ;1.5 BIT
 
 - MOV C,UART_RXD
 
 - MOV ACC.0,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;2.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.1,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;3.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.2,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;4.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.3,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;5.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.4,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;6.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.5,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;7.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.6,C
 
  
- JNB TF2,$
 
 - CLR TF2
 
  
- JNB TF2,$
 
 - CLR TF2 ;8.5
 
 - MOV C,UART_RXD
 
 - MOV ACC.7,C
 
  
- JNB TF2,$
 
 - CLR TF2 ;9.5
 
 - JNB UART_RXD,$ ;等待停止位,并重新复位计数器
 
 - SETB UART_RXD
 
  
- POP DPL
 
 - POP DPH
 
 - POP IE
 
 - RET
 
  复制代码 |   
 
 
 
 |