当前位置: 网站首页 > 技术应用 > 单片机应用 > 串口通讯

单片机与PC机的RS232串口通信

关于SN单片机与PC机的RS232串口通信
使用一个带有 RS232 功能的 SN8F2765(64,62) 芯片,就可以轻易与 PC 机进行 RS232 通信.

在初始化程序里,调用串口初始化程序: Z_CSH_UARTS,其中,接收使用中断方式.
;========================================================
Z_CSH_UARTS:;//使用16/4M内部RC振荡器,也可以使用外部晶体振荡器.
        ZB0            FURXPEN ; 禁止UART RX 奇偶校验位功能。
        ZB0     FUTXPEN ; 禁止UART TX 奇偶校验位功能。
;设置UART 波特率。
        M1M           URRX,#5; 设置UART 前置分频器URS[2:0]。
        M1M     URCR,#0E7H;设置UART波特率8位缓存器。#0E6H-----内部振荡器:这个不行!
;M1M   URCR,#0E6H;设置UART波特率8位缓存器。#0E6H-----内部振荡器:这个不行!
;        M1M           URCR,#0F3H ;波特率=19200
        ZB1            FURXEN ; 使能UART RX 功能和引脚。
        ZB0            FURXIRQ ; 清UART RX 中断标志。
        ZB1            FURXIEN ; 使能UART RX 中断功能。
B_CSH_TX:
          ZB0            FUTXPEN ; 禁止UART TX 奇偶校验位功能。
        ZB1            FUTXEN ; 使能UART TX 功能和引脚。
        ZB0            FUTXIRQ ; 清UART TX 中断标志。
        ZB0            FUTXIEN
        ZB1        FGIE
        RET
;---------------------------------------------------
上面初始化串口程序已经准备了接收与发送都有效的功能.
接着,准备一段子程序,实现"即收即发",就是把PC 机发送来的内容立即发送返回给PC机.
接收时,如果需要保留接收的内容,则安排好对应的 RAM 空间地址,例如:保存到 100H 开始的地方.
如果需要,还可以约定长度.例如:23 个字节.
还可以在接收全部字节后,返回一个 OK 给 PC 机
即收即发子程序如下:
;============================================================
B_ISR_UART_RX:;即收即发----这是串口接收中断子程序
        BS1        FURXIRQ
        RETI
        ZB0        FURXIRQ
        BS0        FUFMER;1=UART frame 错误
        RETI
        BS0            FURXBZ ; 检查URXBZ 位
        JMP        $-1
        ZMN        H,#1 ;保存到 100H 开始的地方
        ATM        #RX0
        ADD        A,RXJS
        MTA        L
        M1M        @HL,URXD
        INCM        RXJS
        COM_        @HL,#24H; 是否超过 23 个字节.
        JMP        @F
        ZM0        RXJS

        MOV        A,#'O';接收完成后返回一个 OK 给 PC 机
        CALL        Z_TX1Z
        MOV        A,#'K'
        CALL        Z_TX1Z
        MOV        A,#21H ;=! 号
        CALL        Z_TX1Z

        ZB0            FURXIEN ; 使能UART RX 中断功能。
        ZB1        FRXWC ;接收完成
        RETI
@@:
        MOV_        UTXD,URXD
        RETI
;-----------------------------------------------------
Z_TX1Z:
        MTA        TEM0
        JMP        B_TX_1M;发送1字节
;*******************************************************************
之后,启动串口软件,选择波特率=9600,禁止奇偶校验,使用字符格式,在发送窗口输入:
dfmg:set ;//任意识别字符,这里使用了dfmg:set
然后,按照下面格式任意4位数字写满23行:
0=*****
1=*****
......
22=****
23=****
$      ;结束符号,方便单片机检测是否接收全部正确完成.
点击串口的"发送"
就会在串口收到返回的同样字符.如图:

 

图片关键词

 

如果需要后续处理,可以根据标志 FRXWC=1 进行其它子程序去处理.
是不是很方便?
仅供参考!

点击次数:  【关闭
  • 壹零零单片机©版权所有 2008-2025 粤ICP备17151077号

Powered by  xinfuke  5.2.5 ©2008-2025  www.100mcu.com