×
嵌入式 > 技术百科 > 详情

STC单片机串口发送数据汇编程序

发布时间:2020-06-03 发布时间:
|

本段程序是在STC官方程序的基础上精简而成,只保留了串口单向发送,使用串口助手可以接收到数据。

本段代代码目的是为了调试的方便,单片机内部一些工作状态和数据可以通过串口发送出来,比如AD采集到的数据等,对调试程序会起到事半功倍的效果。以下为asm格式汇编代码:

; --- 使用伟福6000编译,STC15W401AS 实测通过------------

;-----定时器2用作串口1的波特率发生器-------

;在Keil开发环境下请选择Intel的8058芯片型号进行编译

;工作频率为11.0592MHz

;-----------------------------------------

AUXR        EQU     08EH        ;//辅助寄存器

T2H         DATA    0D6H        ;//定时器2高8位

T2L         DATA    0D7H        ;//定时器2低8位

BUSY        BIT 20H.0           ;//忙标志位

;-----------------------------------------

    ORG   0000H

    LJMP  MAIN

    ORG   0023H

    LJMP  UART_ISR

;//-----------------------------------------

    ORG   0100H

MAIN:

    CLR     A

    CLR   BUSY

    CLR   EA

    MOV   SP,#3FH

;//-------------------------------    

    MOV   SCON,#50H             ;//8位可变波特率,无校验 

    MOV   T2L,#0D0H             ;//设置波特率重装值(65536-18432000/4/115200)

    MOV   T2H,#0FFH             ; #FFD0对应波特率57600

    MOV   AUXR,#14H               ;//T2为1T模式, 并启动定时器2

    ORL   AUXR,#01H             ;//选择定时器2为串口1的波特率发生器

    SETB  ES                    ;//使能串口中断

    SETB  EA

;//-------------------------------

;发送串口测试数据,三次     

    MOV   A,#0FH

    LCALL SENDDATA

    MOV   A,#0BH

    LCALL SENDDATA

    MOV   A,#0CH

    LCALL SENDDATA

    SJMP  $

;UART 中断服务程序

;----------------------------*/

UART_ISR:

    PUSH  ACC

    PUSH  PSW

    JNB   TI,ISR_EXIT           ;//检测TI位

    CLR   TI                    ;//清除TI位

    CLR   BUSY                  ;//清忙标志

ISR_EXIT:

    POP   PSW

    POP   ACC

    RETI

;

SENDDATA:

    JB    BUSY,$                ;//等待前面的数据发送完成

    SETB  BUSY

    MOV   SBUF,A                ;//写数据到UART数据寄存器

    RET

;//-----------------------------------------

    END


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分布式光纤温度传感器(DTS)系统的应用