用delphi控制单片机的输出高电平 ( 积分: 100 )

  • 主题发起人 主题发起人 wwdelphi
  • 开始时间 开始时间
W

wwdelphi

Unregistered / Unconfirmed
GUEST, unregistred user!
我想用单片机来输出高电平,如何在delphi里写好汇编再传给单片机呢?
我用spcomm控件做过232的控制,可是没接触过单片机的控制
最好有例程,谢谢!
我的邮箱是wxqdelphi@eyou.com,wxqdelphi@hotmail.com.cn
 
我想用单片机来输出高电平,如何在delphi里写好汇编再传给单片机呢?
我用spcomm控件做过232的控制,可是没接触过单片机的控制
最好有例程,谢谢!
我的邮箱是wxqdelphi@eyou.com,wxqdelphi@hotmail.com.cn
 
是这样的:你如果想让单片机输出高电平,你就得针对单片机编程,单片机内有固化程序,然后你的计算机也要编写串口通信的程序。也就是下位机与上位机各自软件的编写。具体编码要根据你的电路与接法。
比如你想在P1.1脚输出高电平,你的单片机内的程序你得类似下面指令:
MOV A,SBUF //接收从计算机传来的数据或命令
XRL A,#88H //此处假设你从计算机送来的命令单片机输出高电平的指令数据是0X88H
JNZ RE //假如不是要单片机输出高电平,转入其它处理部分
SETB P1.1 //让单片机输出高电平
将上述程序用编程器写到单片机的程序存储器中;然后下一步你要编写计算机部分的程序。
此处假定你用的是C:
...
outportb(0x3fc,0x03) /*PC机片于发送状态*/
ourportb(0x3fb,0x88) /*送命令88H到单片机*/
...
编译之,在计算机上运行该程序,如果一切没出错的话单片机会在P1.1脚输出高电平。
如果你想在计算机上用汇编写计算机部分的程序也同样写法。以上直接读写串口不能在NT或win2000中运行。如想在NT或win2000中运行。如你所说,用SPCOMM之类的控件就可以了。
var
chigh:array[1..16] of byte;
begin
...
chigh[1]:=$88 //高电平指令数据;
comm1.writecommdata(@chigh[1],1) //送出控制命令到单片机
...
end;
[:D]我省略了好多初始化与准备工作,只是划出了核心部分。
 
太感谢你了!
我看资料说单片机有三根线,用来实现232传输,是把这三根线和单片机连上就能实现串口通讯了吗?
是不是不同的单片机的控制原理是不同的?
 
wa,Today meet GaoShou ,turn big open eye sideline![:)][:)]
 
下午踢球不在。。是的。你的理解基本不错。三根线是最基本的一种接法。即RXD、TXD、GND三线。分别是表示接收、发送、信号地。单片机一般要接max232芯片转换成RS232电平,然后通过max232芯片与计算机的串口相连。是的。不同的单片机有不同的控制规则。但是大体原则是近似的。你要看你所用的是什么MCU了。
 
为什么不用CTS/RTS电平控制呢?有专用的API函数[:(!]供调用,硬件线路稍加改造就能实现简单的控制目的!
 
老贾: 你说得很对,不用 rxd,txd 用其他引脚确实能简化很多,我正在找这方面的资
料,你能不能详细介绍一下这方面的 API 函数?多谢!

最简单的串口数字及模拟信号采集——
http://www.daqchina.net/daqchina/acquire/comio1.htm

这里有相关的一些资料,但我还没找到如何用在 delphi 里请高手指点一下,
 
楼上两位说得好。楼主的要求是用单片机控制,肯定还有别的要求。只用计算机的串口的RTS与CTS是方便。如果要求多点控制的话,从串口窃电只稳定性你试试就知道了。再不用说从串口简单输出一下,控制那一点?目标出故障反冲过来的电能毁你串口、主机你考虑不?
所以只适合单点一对一控制,目标无高电能,并且目标没有别的控制要求。至于laoyou的问题,你想在那个环境下用?win98/me、or win2000/nt、or linux?
 
turtlesam:
我找到这两个 api 函数了:
function EscapeCommFunction(hFile: THandle; dwFunc: DWORD): BOOL; stdcall;
为控制 RTS,CTS 输出电平,
function GetCommModemStatus(hFile: THandle; var lpModemStat: DWORD): BOOL; stdcall;
为获取其它四个引脚的电平,(除 RXD,TXD,RTS,CTS,GND 之外的四个引脚)
在 WINME 下可以用,在 WIN2000/NT 可以用吗?[:)]
 
非常感谢两位大虾的帮忙!
 
后退
顶部