您的位置:首页单片机义隆单片机
内容搜索:
阅读内容
背景:#EDF0F5 #FAFBE6 #FFF2E2 #FDE6E0 #F3FFE1 #DAFAF3 #EAEAEF 默认  

EM78系列单片机--异步串行通信设计

[日期:2008-07-01 ] [来源:东哥单片机学习网 www.picavr.com 整理 作者:佚名] [字体: (投递新闻)
在EM78系列单片机内部没有异步串行口,所以必须用软件来完成这个工作。在很多实际应用中,我们已经采用了软件实现RS232标准的异步串行通信,结果证明工作非常稳定可靠。用软件完成串行通信,降低了芯片的硬件成本。
下面给出RS232的发送和接收的程序和流程,供读者参考。
图5.8   RS232的发送和接收流程
程序清单如下:

;定义
STATUS          EQU     3
P5              EQU     5
P6              EQU     0X06

 
BUFFER          EQU     0X11
COUNT           EQU     0X12
BITNUM        EQU  8  ;每字节数据为8位
        ORG     0
        JMP     MAIN
;主程序
MAIN:   MOV     A,@0X40    ;置P6.5为输出口,P6.6为输入口
        IOW     P6      
        CLR     BYTE
        MOV     A,@BITNUM
        MOV     COUNT,A    ;传送数据为每字节8位
;以下为接收
TEST:   JBC     P6,6      ;检测是否收到起始位
        JMP     TEST      ;未测到
        CALL    DELAY   ;测到起始位,下面准备接收
        CALL    DELAY     ;延时
START:  JBC     P6,6
        BS      BYTE,7    ;收到高电平
        JBS     P6,6
        BC      BYTE,7    ;收到低电平
        DJZ     COUNT
        JMP     L1       ;一个字节未收完,继续收下一位
        CALL    DELAY
        JMP     TRANSMIT   ;一个字节收完,准备发送
L1:     RRC     BYTE
        CALL    DELAY
        JMP     START
;以下为发送
TRANSMIT:

        MOV     A,@BITNUM
        MOV     COUNT,A
BEGIN:  BC      P6,5      ;发送起始位
        CALL    DELAY1    ;延时
L2:     RRC     BYTE      ;发送一位数据
        JBC     STATUS,C
        BS      P6,5
        JBS     STATUS,C
        BC      P6,5
        CALL    DELAY1    ;延时
        DJZ     COUNT ;一个字节发送完否?
        JMP     L2       ;否,继续发送下一位
        BS      P6,5      ;是
        CALL    DELAY1
        JMP     TEST      ;继续循环
;延时子程序
DELAY:  MOV     A,@23
        MOV     BUFFER,A
LOOP:   DJZ     BUFFER
        JMP     LOOP
        RET
DELAY1: MOV     A,@30
        MOV     BUFFER,A
LOOP1:  DJZ     BUFFER
        JMP     LOOP1
        RET

 
阅读:
录入:JETTA

推荐 】 【 打印
本文评论
      全部评论
    meico 于04日评论道: 查看全部评论  
hehe我正要呢 谢谢 我也在要完善一个串口程序呢
发表评论


点评: 字数
姓名:
赞助商广告