要求:pc机向单片机发送321,单片机向电脑发送get321!,pc机向单片机发送123,单片机向pc机发送当前的秒数(自打开到接收到的时间值)
#include
#include "Config.h"
uchar i = 0;
uchar Count = 0,second=0,minute;//用来计数、定时
uchar flag = 0;
uchar string[3], j = 0;//用来储存每次接受的字符
void Send_Byte(uchar data)
{
while(!(IFG1&UTXIFG0));
U0TXBUF=data;
}
//发送字符串
void Print_Str(uchar *s)
{
while(*s != '\0')
{
Send_Byte(*s++);
}
}
//端口的初始化
void UART_Init()
{
U0CTL|=SWRST; //复位SWRST,当SWRST=1时开始进行设置串口
U0CTL|=CHAR; //8位数据模式
U0TCTL|=SSEL1; //SMCLK为串口时钟
U0BR1=baud_h; //BRCLK=8MHZ,Baud=BRCLK/N
U0BR0=baud_l; //N=UBR+(UxMCTL)/8
U0MCTL=0x00; //微调寄存器为0,波特率9600bps
ME1|=UTXE0; //UART1发送使能
ME1|=URXE0; //UART1接收使能
U0CTL&=~SWRST;
IE1|=URXIE0; //接收中断使能位
P3SEL|= BIT4; //设置IO口为普通I/O模式
P3DIR|= BIT4; //设置IO口方向为输出
P3SEL|= BIT5;
}
void TIMERA_Init(void) //连续计数模式,计数到0XFFFF产生中断
{
TACTL |= TASSEL1 + TACLR + ID0 + ID1 + MC0 + TAIE; //SMCLK做时钟源,8分频,增加计数模式,开中断
TACCR0 = 9999;
}
#pragma vector = TIMERA1_VECTOR
__interrupt void Timer_A(void)
{
switch(TAIV) //需要判断中断的类型
{
case 2:break;
case 4:break;
case 10:Count++;break; //设置标志位Flag
}
if(Count==100) //100次为1秒
{
second++;
Count=0;
if(second==60)
{
minute++;
second=0;
}
}
}
#pragma vector=UART0RX_VECTOR
__interrupt void UART0_RX_ISR(void)
{
uchar data=0;
data=U0RXBUF;
string[j++] = data;
if(j >= 3)
{
j = 0;
}
if((string[0]=='3')&&(string[1]=='2')&&(string[2]=='1'))
{
Send_Byte('g');
Send_Byte('e');
Send_Byte('t');
Send_Byte('3');
Send_Byte('2');
Send_Byte('1');
Send_Byte('!');
Send_Byte(' ');
string[0]='\0';
string[1]='\0';
string[2]='\0';
}
if((string[0]=='1')&&(string[1]=='2')&&(string[2]=='3'))
{
Send_Byte(minute/10+0x30);
Send_Byte(minute+0x30);
Send_Byte(':');
Send_Byte(second/10+0x30);
Send_Byte(second+0x30);
Send_Byte(' ');
string[0]=0;
string[1]=0;
string[2]=0;
}
}
void main(void)
{
WDT_Init(); //看门狗设置
Clock_Init(); //系统时钟设置
UART_Init();
TIMERA_Init();
_EINT(); //开中断
while(1)
{
;
}
}
//使用串口调试助手的时候注意应该要关掉以16进制发送跟显示,发送的均是以ASCLL的,所以发送数字的时候应+0x30,发送字符的时候应 加’‘,
//单片机接受pc机发送的指令是单个接受的,一个字符一个字符接受的,所以说需要设置一个数组来储存所接受的字符,否则每次接受中断,之前接受的字符就没有了,
单片机发送字符也是单个字符发送的,但是也可以发送字符串,
上一篇:MSP430G2553(二)Timer定时器说明与实例
下一篇:430f149的定时器A的中断程序
推荐阅读最新更新时间:2024-03-16 15:44