pc与单片机通信

来源:百度知道 编辑:UC知道 时间:2024/05/23 16:08:11
谁帮我写个单片机端程序啊?就是计算机发送了16进制数,然后在单片机p1口输出。如发送“6a”,p1口为“01101010”,发送“33”则输出“00110011”?汇编最好~~
我要用T0口定时,是不是就将TR1改成TR0,再将TMOD #20改成#02呢?

使用的是,11.0592M的晶振.波特率9600
ORG 000H
AJMP MAIN
ORG 23H
LCALL URT
RETI
ORG 30H
MAIN:
LCALL URTINIT
AJMP $
URTINIT:
MOV SCON,#50H ;设置成串口工作方式在8位URT
MOV TMOD,#20H ;设置T1为可重装8位定时器
MOV TL1,#0FDH ;256-FOSC/BTL/32/12
MOV TH1,#0FDH
SETB TR1 ;开启定时器
SETB ES ;开启串口中断
SETB EA ;开总中断
RET
URT:
MOV A,SBUF ;接收到数据后将数据返回
MOV SBUF,A ;将送缓冲区的数据送A
CLR RI ;清接收中断标志
JNB TI,$ ;发送是否完成
CLR TI ;清发送中断标志
MOV P1,A;将收到的数据送到,P1口
RET
END

很明显用T0是不行的...
串口默认的波特率发生器,就是由T1产生的.
如果要使用T0,只能是定时或计数.而不能用作串口的小波特率发生器..

楼上的程序没法满足你的要求啊,用我的吧
ORG 0000H
AJMP START
ORG 0023H
LJMP SERIALS
ORG 0030H
START:MOV SP,#5FH
MOV TMOD,#20H
MOV PCON,#80H
MOV TH1,#0FAH ;波特率9600 ;晶振11.0592
MOV SCON,#50H
SETB TR1
SETB ES
SETB EA
SERIALS:
JNB RI,$
MOV A,SBUF
D1:CJNE A,#6A