站内文章搜索:

 

 行业资讯 
 电子基础 
 汽车电子 
 家电维修 
 手机数码 
 通信网络 
 PLC工控 
 LED照明 
 安防电子 
 消费电子 
 电源电池 
 嵌入式系统 
 EDA技术 
 音响技术 
 医疗电子 
 半导体 
 光伏技术 
 SMT技术 
 传感器 
 电工电气 
 单片机 
 EMC EMI 
 电机控制 
 光电显示 
您现在的位置: 电子之家 >> 单片机 >> 正文   更新时间:2014-3-3 1:30:05  点击数:1807

汇编编写的模拟串口通信程序

分享此文章:

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

  • 上一篇文章:

  • 下一篇文章:
  • 相关文章

    没有相关文章

    推荐文章

    · PIC系列单片机简介
    · PIC单片机与MCS-51系列单片机的区别
    · 什么是PIC单片机?
    · PIC 8位单片机的分类和特点
    · C51的一些误区和注意事项
    · 常用PIC系列8位单片机芯片引脚符号的功

    热门文章

    · 如何学习单片机
    · PIC系列单片机数据存储器的特点和功能
    · C语言程序的一般仿真调试步骤
    · 汇编编写的模拟串口通信程序
    · C语言常用语法的简单摘要
    · PIC 8位单片机16F8X系列简介

    | QQ:278237851 | 鲁ICP备14015669号-3 |

    电子之家 版权所有