
一般来说,过程如下:
1,配置串口参数、波特率等,开启串口中断;
void Init_UART()
{
}
2,中断函数里写中断响应函数,根据接收的指令或者数据,执行相应的动作;
程序一般为:
void UART_ISR() interrupt x using y
{
串口中断搏弯处理函数
}
x - 单片机的C51中断号
y - 指定使用的当前工作寄肆银腊存器组号(0-3 PSW中的RS0,RS1组合)
3,主程序
int main(void)
{
Init_UART()
while(1)
{
//数据发送函数
}
}
#include#include
int
main(void)
{
FILE
*fp
char
temp
char
buf[100]
if((fp
=
fopen("com3","r"))
==
NULL)
puts("this
way
doesn't
work!\n")
else
puts("this
way
works!\n")
while(1)
{
temp
=
0
fscanf(fp,"%c",&temp)
if(temp
!=
0)
putchar(temp)
else
Sleep(100)
}
fclose(fp)
return
0
}
以前弄的,好久没看了,不知到对不对。
还有下面这段:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#include
#include
HANDLE
hCom
int
main(void)
{
hCom=CreateFile(TEXT("COM3"),//COM1口
GENERIC_READ|GENERIC_WRITE,
//允许读和写
0,
//独滚链占方式
NULL,
OPEN_EXISTING,
//打开而不是创建
0,
//同步方式
NULL)
if(hCom==(HANDLE)-1)
{
printf("打开COM失败!\n")
return
FALSE
}
else
{
printf("COM打开成功!\n")
}
SetupComm(hCom,1024,1024)
//输入缓冲区和输出缓冲区的大小都是1024
COMMTIMEOUTS
TimeOuts
//设定读超时
TimeOuts.ReadIntervalTimeout=1000
TimeOuts.ReadTotalTimeoutMultiplier=500
TimeOuts.ReadTotalTimeoutConstant=5000
//设定写超时
TimeOuts.WriteTotalTimeoutMultiplier=500
TimeOuts.WriteTotalTimeoutConstant=2000
SetCommTimeouts(hCom,&TimeOuts)
//设置超大悔孙时
DCB
dcb
GetCommState(hCom,&dcb)
dcb.BaudRate=9600
//波特率为9600
dcb.ByteSize=8
//每个字节有8位
dcb.Parity=NOPARITY
//无奇偶校验位
dcb.StopBits=ONE5STOPBITS
//两个停止位
SetCommState(hCom,&dcb)
DWORD
wCount//读取的字节数
BOOL
bReadStat
while(1)
{
PurgeComm(hCom,PURGE_TXCLEAR|PURGE_RXCLEAR)
//清空缓冲区
char
str[9]={0}
printf("%s\n",str)
bReadStat=ReadFile(hCom,str,9,&wCount,NULL)
if(!bReadStat)
{
printf("读串口失败!")
return
FALSE
}
else
{
str[8]='\0'
printf("%s\n",str)
}
Sleep(100)
}
}
以上两段前闹代码是一年前弄的,我记得可以用,你试试。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)