您的位置 首页 报告

中止和串口分析

以前对STC89C52单片机的串口中断始终没有深入的了解今天没什么事,就好好的琢磨了一下,前提是单片机开启了串口中断1、先说串口接收数据中

曾经对STC89C52单片机的串口中止一直没有深化的了解

今日没什么事,就好好的琢磨了一下,条件是单片机敞开了串口中止

1、先说串口接纳数据中止吧:当单片机串口接纳到数据后,发生中止,单片机跳到中止程序中,能够挑选接纳数据或许进行其他的操作,此刻的串口数据能够作为操控信号,也能够仅仅是一个触发动作,详细的操作依据中止函数完成详细的功用。在中止函数最终,需求将串口接纳标志位RI清0。

2、发送中止:当单片机向串口发送数据后,单片机发生串口发送中止,同理,所发送的数据仅仅是动身中止,中止函数的详细功用和所发的数据没有必定的联系,串口发送的效果是触发中止。相同,不要忘了在最终将 TI 清0.

总的来讲,在STC89C52中,串口发送和串口接纳终端共用一个中止源,需求在中止函数中选用一个if…elseif…结构来判别接纳中止标志位和发送中止标志位依据判别成果履行相应的函数。

假如需求读取串口数据,则在中止函数中将缓冲区的数据读入单片机进行相应的处理,假如不需求对接纳到的数据进行处理,那么此刻串口仅仅是作为一个开关,效果便是动身中止,然后用户依据需求在中止函数中进行相应的操作即可,串口发送总中止也是这样一个道理,仅仅一般咱们都是将串口作为一个数据通道,中止的效果是,在接纳和发送数据的一起还能够依据需求进行相关的操作。

VB下计算机与单片机的通讯:

(1)PC端程序:

Private Sub Command1_Click()
Dim Num As Integer
Dim outbte(0) As Byte
Num = Val(Text1.Text)
outbte(0) = CByte(Num)
MSComm1.OutBufferCount = 0
MSComm1.Output = outbte
End Sub

Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Form_Load()
MSComm1.RThreshold = 2
MSComm1.CommPort = 1
MSComm1.Settings = “9600,n,8,1”
MSComm1.PortOpen = True
End Sub

Private Sub MSComm1_OnComm()
Dim indata As Variant
Dim bte(0) As Byte
Select Case MSComm1.CommEvent
Case comEvReceive
indata = MSComm1.Input
bte(0) = AscB(indata)
Text2.Text = bte(0)
MSComm1.InBufferCount = 0
End Select
End Sub

(2)单片机程序

#include

sbit CW = P1^1;
sbit CK2 = P1^2;
sbit CK1 = P1^3;
sbit M1 = P1^4;
sbit M2 = P1^5;
sbit REFIN = P1^6;
int m = 0;

void main(void)
{
int k,n;
TMOD = 0x20;
TH0 = 0xEF;//ef;
TL0 = 0xFF;

EA = 1;
ET0 = 1;

TR0 = 1;

TH1 = 0xfd;
TL1 = 0xfd;

PCON = 0x00;
SCON = 0x50;
//REN = 1;
//SM2 = 0;

ET1 = 0;
ES = 1;

TR1 = 1;

REFIN = 0;
M1 = 1;
M2 = 0;
CK1 = 1;
CW = 1;
//n = 100;
while(1)
{
for(k = 0; k < 30000; k++);
SBUF = m;
//n–;
}
}

void CLK() interrupt 1
{
CK2 = !CK2;
TH0 = 0xEF;
TL0 = 0xFF;
m++;
}

void SERIAL() interrupt 4
{

//TI = 0;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ceping/baogao/260038.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部