如果你只保留计算机,用计算机的COM串口直接作为输出驱动,是有问题的。分析如下,因为计算机的串口主要用途是通讯,即传送一些RS232电平的信号,比如传送数字1、2、3。。。或者是字母A、B、C。。。。。等,即使是传送一位也会同时有0逻辑和1逻辑出现,即不能一直让串口线的TX线一直输出逻辑0的,所以无法实现你说的功能。
#include <reg51.h>void main(void)
{
TMOD = 0x20
TH1 = 0xfd
TL1 = 0xfd
EA=1
ES=1
TR1=1
REN=1
SM0=0
SM1=1
P0=0xFF
while (1)
{
}
}
void timer4() interrupt 4
{
RI=0
P0=SBUF
P0=~P0
}
应该是这样
你用到定时器的第三种形式
需要用到中断
因为数据溢出会自动令RI置1,这时你需要利用中断让RI置0
若你继续想用你的"cha"这个函数
应该要这样
void timer4() interrupt 4
{
RI=0
cha=SBUF
cha=~cha
P0=cha
}
希望能帮助你~
你怎么样改始终都要将RI置0
一般出现乱码都是波特率不正常导致。晶振11.0592MTMOD=0x25 //计数器0工作方式1,定时器1工作方式2
SCON=0x50 //串口工作方式1
TH1=0xfa //串口波特率4800
TL1=0xfa
EA=1
ES=1
TR1=1
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)