📄 hnr_s6.c
字号:
//USB转FIFO实验
/*
需要将USBMD1接到USBMD1插座上,然后连上USB线,把驱动程序安装好。
需要将8路的按键电路板接到P5口上
功能1:将电脑传出来的数据传回到电脑上
功能2:将P5口的按键值发送到电脑上
电脑收发软件采用软件HNRCOM.exe,波特率随便设,实际传输的跟波特率设置无关,该模块都会采用最高速度进行通讯,即8Mbps
调试时,要选择正确的串口号,一般情况下都会大于COM4
*/
#include "msp430x14x.h"
main()
{
unsigned int i;
unsigned char cusbtxdata;
unsigned char keyval;
WDTCTL=WDTPW+WDTHOLD;//关闭看门狗
//端口初始化
P1DIR=0x00;//P1口所有引脚设置为输入
P2DIR=0x03;//P2.0~2.1为输出,其余为输入
P2OUT = 0x03; //平时保持高电平
P2IE = BIT3; //接收中断
P2IES = BIT3; //下降沿中断
P5DIR = 0x00; //P5口作为按键输入
do
{
IFG1&=~OFIFG;//清除振荡器失效标志
for(i=255;i>0;i--);
}while(IFG1&OFIFG);//判断XT2是否起振
BCSCTL2=SELM1+SELS;//MCLK SMCLK时钟源为TX2CLK不分频
cusbtxdata=0;
_EINT();//开启中断
while(1)
{
keyval = P5IN;
if((keyval!=0xff)&&(keyval!=cusbtxdata))
{
//向PC传输数据
cusbtxdata = keyval;
P2OUT |= BIT1;
P1DIR = 0XFF;//P1口所有引脚设置为输出
P1OUT = cusbtxdata;
P2OUT &=~BIT1;
P2OUT |= BIT1;
}
for(i=0;i<1000;i++)
{
_NOP();
_NOP();
}
};
}
#pragma vector=PORT2_VECTOR
__interrupt void PORT1 (void)
{
unsigned char rxdata;
if((P2IN&BIT3)!=BIT3)
{
//接收数据
P1DIR=0x00;//P1口所有引脚设置为输入
P2OUT &=~BIT0; //开发接收
_NOP();
rxdata = P1IN; //接收数据
_NOP();
P2OUT |= BIT0; //接收完毕
_NOP();
//回传数据
P2OUT |= BIT1;
P1DIR = 0XFF;//P1口所有引脚设置为输出
P1OUT = rxdata; //送出数据
P2OUT &=~BIT1; //发送使能
P2OUT |= BIT1; //发送结束
}
P1IFG=0X00; //清除中断标志
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -