我想把LPC900和电脑联机测试串口通信,循环输出数据“0-15”,同时让LED亮灭,时间间隔15s左右。灯的工作正常就是没有正确的输出数据,有输出是“《”符号。请各位大侠帮忙分析分析????
;///变量定义
HZ_STAT BIT P0.0 ;烟雾传感器输出信号连接 P89LPC922的P0.0(1)脚
HZ_LED BIT P1.6 ;报警指示灯
HZ_MODULE BIT P1.4 ;控制短信模块电源
;~~~PROGROM程序
org 0000H
ajmp MAIN
org 0100H
;~~~ 主程序开始
MAIN:
mov SP,#60H
anl P0M1,#0FEH ;I/O口配置
anl P0M2,#0FEH
mov P1M1,#00H
mov P1M2,#50H
mov P0,#0FFH
mov P1,#0AFH
acall UART_INT
WATCH:
jnb HZ_STAT,$
setb HZ_MODULE
setb HZ_LED
HZ_BAOJING:
acall SEND_DATA ;发送报警短信息
acall DELAY
cpl HZ_LED
ajmp HZ_BAOJING
;=============串口初始化
UART_INT:
mov PCON,#00H
mov SSTAT,#00H
mov SCON,#40H ;串口模式1,接收使能
mov BRGCON,#00H
mov BRGR1,#04H ;波特率9600bit/s
mov BRGR0,#70H
mov BRGCON,#03H ;启动UART的波特率发生器
ret
;********************************************
; 名称: SEND_DATA
; 功能: 通过 UART 连续发送 16 字节数据(0~15)
; 入口参数 无
; 出口参数 无
; 注意: 此程序采用查询方式发送
;********************************************
SEND_DATA:
MOV R7,#10H
CLR TI
CLR A
SEND_DL1:
MOV SBUF,A
JNB TI,$ ;等待一字节发送完毕
CLR TI
INC A
DJNZ R7,SEND_DL1
RET
;=============延时子程序
DELAY:
MAIN_L0: MOV R3,#10
MAIN_L1: MOV R7,#60
MAIN_L2: MOV R6,#0
MAIN_L3: MOV R5,#0
DJNZ R5,$
DJNZ R6,MAIN_L3
DJNZ R7,MAIN_L2
DJNZ R3,MAIN_L1
ret
end |