- 打卡等级:以坛为家I
- 打卡总天数:303
- 最近打卡:2025-05-03 21:43:16
金牌会员
- 积分
- 1295
|
发表于 2023-10-3 16:25:32
|
显示全部楼层
本帖最后由 lospring 于 2023-10-3 16:33 编辑
第七讲
按键点灯
#include "COMM/STC32G.H"
#include "COMM/stc32_stc8_usb.h"
#define MAIN_Fosc 24000000UL //定义主时钟
#define key P32
#define key1 P33
char *USER_STCISPCMD="@STCISP#";
char *USER_DEVICEDESC=NULL;
char *USER_PRODUCTDESC=NULL;
void sys_init()
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x30; P0M0 = 0x30; //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
P1M1 = 0x32; P1M0 = 0x32; //设置P1.1、P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V), P1.1在PWM当DAC电路通过电阻串联到P2.3
P2M1 = 0x3c; P2M0 = 0x3c; //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V),设置开漏模式需要断开PWM当DAC电路中的R2电阻
P3M1 = 0x50; P3M0 = 0x50; //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
P4M1 = 0x3c; P4M0 = 0x3c; //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
P5M1 = 0x0c; P5M0 = 0x0c; //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
P6M1 = 0xff; P6M0 = 0xff; //设置为漏极开路(实验箱加了上拉电阻到3.3V)
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
}
void delay_ms(u16 ms)
{
u16 i;
do{
i=MAIN_Fosc/6000;
while(--i);
}while(--ms);
}
void main()
{
P0M0=0X00;//设置IO模式,P0M0与P0M1一起控制。
P0M1=0X00;
P4M0=0X00;
P4M1=0X00;
P6M0=0X00;
P6M1=0X00;
sys_init();
usb_init();
EA=1;
P6=0XFE;
while(1)
{
if(DeviceState != DEVSTATE_CONFIGURED)
continue;
if(bUsbOutReady)
{
usb_OUT_done();
printf("Hello World");
}
P40=0;
if(key==0)
{
delay_ms(10);
if(key==0)
{
printf("按键P32已按下\r\n");
P60=0;
}
}
else
{
P60=1;
}
//-------------------按下按键状态翻转-----------------
// if(key1==0)
// {
// delay_ms(10);
// if(key1==0)
// {
// printf("按键P33已按下,led状态翻转\r\n");
// P67=!P67;
// while(key1==0)
// {
//
// }
// }
// }
// }
//-------------------按下按键,led左移一个单位点亮-----------------
if(key1==0)
{
delay_ms(10);
if(key1==0)
{
printf("按键P33已按下,led左移一位\r\n");
P6=((P6<<1)+1);
if(P6==0XFF)
{
P6=0xFE;
}
while(key1==0)
{
}
}
}
}
}
#快捷键,alt+shift可以选择一列数据如
0XFE
0XFD
0XFB
0XF7
0XEF
0XDF
0XBF
0X7F
通过上面方式可以快速选择FE,FD,FB。。。。
#数组操作
u8 LED_TAB[8]={
FE,
FD,
FB,
F7,
EF,
DF,
BF,
7F
};
|
|