感谢STC官方 免费+包邮 的AI8051U实验箱
此帖仅记录跟冲哥AI8051U进阶视频第六天学习心得,,今天学习到了什么是GPIO,和按键操作,实现按键电灯


# include "intrins.h"
# include "stc32_stc8_usb.h"
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
//按键io口定义
sbit key_1 = P3^2;
sbit key_2 = P3^4;
sbit key_3 = P3^5;
#define MAIN_Fosc 24000000UL
//延时函数
void delay_ms(u8 ms);
void delay_ms(u8 ms)
{
u16 i;
do{
i = MAIN_Fosc / 6000;
while(--i);
}while(--ms);
}
void main(void)
{
P_SW2 |= 0x80;
P0M1 = 0x00; P0M0 = 0x00;
P1M1 = 0x00; P1M0 = 0x00;
P2M1 = 0x00; P2M0 = 0x00;
P3M1 = 0x00; P3M0 = 0x00;
P4M1 = 0x00; P4M0 = 0x00;
P5M1 = 0x00; P5M0 = 0x00;
P6M1 = 0x00; P6M0 = 0x00;
P7M1 = 0x00; P7M0 = 0x00;
usb_init(); //USB CDC 接口配置
IE2 |= 0x80; //使能USB中断
EA = 1;
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
while(1)
{
if (bUsbOutReady)
{
USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
usb_OUT_done();
}
P40=0;
if(key_1==0)
{
delay_ms(5); //消抖
if(key_1==0)
{
P00=!P00;
}
while(!key_1);
}
if(key_2==0)
{
delay_ms(5); //消抖
if(key_2==0)
{
P01=!P01;
}
while(!key_2);
}
if(key_3==0)
{
delay_ms(5); //消抖
if(key_3==0)
{
P02=!P02;
}
while(!key_3);
}
}
}
|