如何用C语言编一个小程序,直接控制计算机的9针串口线,一直输出逻辑0。

如何用C语言编一个小程序,直接控制计算机的9针串口线,一直输出逻辑0。,第1张

一般来讲,你说的这种功能是这样实现的:用VB或者VC在计算机上面编写一个应用程序 *** 作界面,一般称为上位机,通过COM串口和下位机(一般是一个单片机系统)物理连接,通过上位机发出指令,也就是通过计算机COM串口发出一些数据。通常是要约定好波特率、数据位、校验等,下位机根据上位机的指令做出执行 *** 作,I/O口输出一个电平去控制继电器,再去控制强电。

如果你只保留计算机,用计算机的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.0592M

TMOD=0x25 //计数器0工作方式1,定时器1工作方式2

SCON=0x50 //串口工作方式1

TH1=0xfa //串口波特率4800

TL1=0xfa

EA=1

ES=1

TR1=1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12020438.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存