找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3020|回复: 0
收起左侧

跪求高手指点!!!!232串口问题

[复制链接]
ID:32410 发表于 2011-11-6 19:28 | 显示全部楼层 |阅读模式

单片机232串口发送字符到电脑。但是无法发送00这个字符。请问有什么办法解决?急求帮助

 

 

K1 EQU P1.4   ; 按键端口
; 变量定义
KEY_S EQU 50H   ; 当前的按键状态
KEY_V EQU 51H   ; 上次的按键状态


 ORG 0000H
 LJMP MAIN

MAIN:
 MOV TMOD,#20H  ; 定时器1工作于8位自动重载模式,用于产生波特率
 MOV TH1,#0FDH
 MOV TL1,#0FDH  ; 波特率9600

 MOV SCON,#50H  ; 设定串行口工作方式
 ANL PCON,#0EFH  ; 波特率不倍增

 SETB TR1   ; 启动定时器1
 MOV IE,#0   ; 禁止任何中断

 MOV KEY_V,#01H  ;

 

MAIN_RX:
 JNB RI,MAIN_KEY  ; 是否有数据到来
 CLR RI
 MOV A,SBUF   ; 暂存接收到的数据
 MOV P0,A   ; 数据传送到P0口
 LCALL SEND_CHAR  ; 回传接收到的数据

MAIN_KEY:
 LCALL SCAN_KEY  ;  扫描按键
 JZ MAIN_RX
 LCALL DELAY_15MS  ;  延时去抖动
 LCALL SCAN_KEY
 JZ MAIN_RX
 MOV KEY_V,KEY_S  ;  保存键值
 LCALL PROC_KEY  ; 键处理
 SJMP MAIN_RX
;===============================================================================
SCAN_KEY:
; 扫描按键, (在此实例中仅扫描按键K1)
; 传入参数: 无
; 返回值: 无
 CLR A
 MOV C,K1
 MOV ACC.0, C
 MOV KEY_S,A
 XRL A,KEY_V   ; 检查按键状态是否改变
 RET
;===============================================================================
PROC_KEY:
; 按键处理子程序 --- 发送字符串到PC
; 传入参数: KEY_V --- 按键值
; 返回值: 无
 JB K1,END_PROC_KEY ; K1未按下时,直接返回
 MOV DPTR,#TAB_WWW  ; 字串表格地址

SEND_STRING:
 CLR A
 MOVC A,@A+DPTR
        JZ END_PROC_KEY
        ACALL SEND_CHAR
 INC DPTR   ; 下一字符
 SJMP SEND_STRING
END_PROC_KEY:
 RET

;===============================================================================
SEND_CHAR:
; 传送一个字符
; 传入参数: ACC(要发送的数据)
; 返回值: 无
 MOV SBUF,A
 JNB TI,$   ; 等特数据传送
 CLR TI   ; 清除数据传送标志
 RET
;===============================================================================
; 扫描按键, (在此实例中仅扫描按键K1)
; 传入参数: 无
; 返回值: 无
DELAY_15MS:
 MOV R7,#15
DELAY15MS_1:
 MOV R6,#0E8H
DELAY15MS_2:
 NOP
 NOP
 DJNZ R6,DELAY15MS_2
 DJNZ R7,DELAY15MS_1
 RET


TAB_WWW:
 DB 80H,78H,78H,80H,00H,80H,00H

       
 END

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表