- 打卡等级:偶尔看看II
- 打卡总天数:24
- 最近打卡:2025-06-27 08:56:01
已绑定手机
中级会员
- 积分
- 212
|
这是全部代码
/*
MAIN_Fosc 24000000Hz
*/
#include <AI8051U.H>
#include "stc32_stc8_usb.h"
#include <intrins.H>
char *USER_DEVICEDESC = NULL;
char *USER_PRODUCTDESC = NULL;
char *USER_STCISPCMD = "@STCISP#";
unsigned char ucLed=0xFE;
unsigned char ucLed_Mode;//流水灯模式
unsigned char ucLed_Buff[]={0x7E,0xBD,0xDB,0xE7};
unsigned char X=25;
unsigned char Y = 10;
unsigned char Key_Number;//按键值
unsigned char LedDisp_Mode;//LED显示模式0-亮一个,1-亮二个,2-亮三个,3-全亮
/*---Xms延时函数 ---*/
void DelayXms(unsigned int Xms) //@24.000MHz
{
unsigned long edata i;
while(Xms--)
{
_nop_();
_nop_();
_nop_();
i = 5998UL;
while (i) i--;
}
}
/*---LED流水灯处理函数 ---*/
void ucLed_Proc()
{
static unsigned char i=0;
P2 = ucLed;
switch(ucLed_Mode)
{
case 0:
if(ucLed==0x7E)
{
ucLed = 0xFE;
}
else
ucLed = _crol_(ucLed,1);
DelayXms(500);
if(ucLed==0x7F)ucLed_Mode=1;
break;
case 1:
ucLed = _cror_(ucLed,1);
DelayXms(500);
if(ucLed==0xFE)ucLed_Mode=2;
break;
case 2:
ucLed=ucLed_Buff[i];
i++;
if(i==3)ucLed_Mode=3;
DelayXms(500);
break;
case 3:
ucLed=ucLed_Buff[i];
i--;
if(i==255)ucLed_Mode=0;
DelayXms(500);
break;
}
P2=0xFF;
}
/*---MAIN 主函数 ---*/
void main()
{
P_SW2 |= 0x80; //B7位写1,使能访问XFR
P0M1 = 0x00; P0M0 = 0x00; //初始化IO口为准双向IO口
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; //IE |= 0X80;开总中断
while (DeviceState != DEVSTATE_CONFIGURED); //等待USB完成配置
while(1)
{
if (bUsbOutReady)
{
// USB_SendData(UsbOutBuffer,OutNumber); //发送数据缓冲区,长度(接收数据原样返回, 用于测试)
// printf("Hello World!\r\n");
// printf("X/Y=%u\r\n",(unsigned int)X/Y);
// printf("X%%Y=%u\r\n",(unsigned int)X%Y);
usb_OUT_done();
}
// ucLed_Proc();
//按键点灯
// if(P32==0)
// {
// DelayXms(20);
// if(P32==0)
// {
// Key_Number ^=1;
// P20 = Key_Number;
// while(P32==0);
// }
// }
//按键按一下亮一个灯,按二下亮两个灯,按三下亮三个灯按四下全亮。
if(P32==0)
{
DelayXms(20);
if(P32==0)
{
while(P32==0);
LedDisp_Mode++;
if(LedDisp_Mode==5)
LedDisp_Mode=0;
}
}
if(LedDisp_Mode==0){P2=0xFF;}
if(LedDisp_Mode==1){P20=0;}
if(LedDisp_Mode==2){P20=1;P21=P22=0;}
if(LedDisp_Mode==3){P21=P22=1;P23=P24=P25=0;}
if(LedDisp_Mode==4){P2=0x00;}
}
} |
|