当前位置: > 热闻

cc2530,一个按键循环控制五个终端(3个LED,1个蜂鸣器,一个串口),要求显示按键值、控制值、五个设备状态值,以及信号怎么产生的

时间:2022-04-21 09:57:14 热闻 我要投稿

#include#define KEY1 P0_0 //按键key1接口为P1_0 #define LED1 P1_0 //LED1接口为P1_0 #define LED2 P1_1 //LED2接口为P1_1 #define LED3 P2_0 //LED3接口为P2_0 #define BUZZ P0_5 //蜂鸣器接口为P0_5 #define RX P0_2 //P0_2口为接收字状态 #define TX P0_3 //P0_3口为发送字状态 /*-----------LED初始化-------------*/ void int_led() { P1SEL &=0xFC; //选择P1_0,P1_1为通用端口 P2SEL &=0xFE; //选择P2_0为通用端口 P1DIR |=~0xfc; P2DIR |=~0xFE; LED1=1; //LED1,默认为关闭 LED2=1; //LED2,默认为关闭 LED3=1; //LED3,默认为关闭 } /*-----------key初始化------------*/ void int_key() { P0SEL &=0x00; //选择P0_0为通用端口 P0DIR &=0x00; P0INP |=0x00; P0SEL &=~0x00; P0DIR |=0x00; //P0口为输出口 } /*-----------蜂鸣器初始化------------*/ void int_buzz() { BUZZ=0; //BUZZ初始化为0 P0SEL &=~0x20; //选择P0_5为通用端口 P0DIR |=0x20; //选择P0_5为输出端口

} int m; int count; //定义全局变量

/*-----------主函数------------*/ void main() { int_buzz(); int_led(); int_key(); count=0; //给按键赋初值,初值为0 UTX0IF = 0; //串口赋值为0 while(1) //进入循环 { for(m=0;m<6;m++) { if(m==1) //m=0时,LED1亮 { LED1=0; LED2=1; LED3=1; BUZZ=0; UTX0IF=0; //串口赋值 } if(m==2) //m=2时,LED2亮 { LED1=1; LED2=0; LED3=1; BUZZ=0; UTX0IF=0; } if(m==3) //m=3时,LED3亮 { LED1=1; LED2=1; LED3=0; BUZZ=0; UTX0IF=0; } if(m==4) //m=4时,蜂鸣器发声 { LED1=1; LED2=1; LED3=1; BUZZ=1; UTX0IF=0; } if(m==5) //m=5时,打开串行口 { LED1=1; LED2=1; LED3=1; BUZZ=0; UTX0IF=1; } if(m==5) //m=5时,m=m-5 { m=m-5; } count++; //按键次数+1 } } }