SN8F26E61 与 PC 机串行通信实践

[复制链接]
查看12799 | 回复3 | 2012-5-6 03:42:45 | 显示全部楼层 |阅读模式
本帖最后由 hfbjjs 于 2012-5-6 04:01 编辑

        SN8F26E61 与 PC 机串行通信实践:
近来, SN 的 8F26E,27E 系列应用机会多起来了! 其性价比也有了很大提升!  从指令系统, 芯片资源,中断分开进入对应地址,都与传统 8P 系列芯片有了不少变化, 尤其它的 UART 功能,让人眼前一亮!
对新功能的认识,除了认认真真阅读芯片手册之外, 最重要的就是实践,下面,就用 26E61 进行 UART 通信实践.
在芯片进行过系统初始化后, 对 UART 也进行一次初始化,:
UART 的初始化子程序:
;====================================================
B_CSH_UART:
        B0BCLR         FURXPEN ; 禁止UART RX 奇偶校验位功能。
        MOV         A,#101B ; 设置UART 波特率。
        B0MOV         URRX,A; 设置UART 前置分频器URS[2:0]。
       ;//  MOV         A,#0E6H ----- 这个不行!
        MOV         A,#0E7H ; 设置UART 波特率8 位缓存器。
        B0MOV         URCR,A
        B0BSET         FURXEN ; 使能UART RX 功能和引脚。

        B0BCLR         FURXIRQ ; 清UART RX 中断标志。
        B0BSET         FURXIEN ; 使能UART RX 中断功能。
B_CSH_TX:
          B0BCLR         FUTXPEN ; 禁止UART TX 奇偶校验位功能。
        B0BSET         FUTXEN ; 使能UART TX 功能和引脚。
        B0BCLR         FUTXIRQ ; 清UART TX 中断标志。
        B0BCLR         FUTXIEN
        RET
;=========================================================
说明: UART 的初始化定义了使用中断来接收 PC 机的通信, 收到后立即把内容发送回给 PC 机. 使用内部 16M/4 RC 振荡器,波特率使用 9600 ,这里出现一个问题,按照手册方法, URRX=010B,URCR=0E6H 就是设置波特率=9600 .结果通信效果不好,老是出错,于是,怀疑内部振荡器不够精确,把 URCR=0E7H  后,效果特好!
UART  的接收中断位于地址 0011H 处,放置一条指令跳到其它位置去执行这个中断.
        ORG     0011H
        JMP     B_ISR_UART_RX ;到其它位置去执行
;---------------------------------------------------------------------------------------------
B_ISR_UART_RX: ;// UART  的接收中断子程序.
        BS1        FURXIRQ ;是否 UART_RX 中断?
        RETI                          ;不是则退出
        ZB0        FURXIRQ
        BS0        FUFMER   ;1=UART frame 错误
        RETI                           ;接收错误退出
        B0BTS0         FURXBZ ; 检查URXBZ 位
        JMP        $-1
                MOV_       UTXD,URXD ;把收到的内容返回给 PC 机
        BS0         FUTXBZ ; 检查UTXBZ 位。
        JMP         $-1 ; UTXBZ=1,TX 发送过程中。
        RETI
;===========================================================
在 PC 机自动发送周期为 500mS时, 双向通信获得成功! 无论中文汉字,数字,字母,均无一错误!----- 上面子程序 8F27E ,8F26E 系列通用! 可以直接拷贝到其它需要的项目去!
实际运行效果图如下:

仅供参考!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
tralia | 2012-5-29 14:10:42 | 显示全部楼层
学习,珍藏……{:soso_e142:}
rfhwang | 2013-12-15 04:25:11 | 显示全部楼层
謝謝!我學起來了
也應用上了
尘飞扬 | 2014-1-9 13:34:04 | 显示全部楼层
谢谢楼主,学习了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则