找回密码
 立即注册
×

00:00:00

您有一张0.1元限时体验卡,马上领取获得VIP尊享特权。

请教下关于STC8H1K08内存问题

2024-7-12 15:30 来自 nibinxiaoyang 发布 @ 综合讨论

以下是我的源代码,
现在的应用要求是一个幻彩灯,一路遥控,两路按键,一路ADC,其余就是想有30种左右的幻彩效果,
结果我完善了所有逻辑功能开始写幻彩,一个程序就8000了,咱么这个这么占内存吗?
以下是我源代码:#define RGB_PIN P3_5//RGB灯的引脚
#define RGB_NUMLEDS 30 //RGB灯的个数
#define RGB_PIN_MODE {P3M1&=~0x20;P3M0|=0x20;}//推挽输出
#define PWM_DUTY_MAX 1000//PWM最大占空比值
#define IR_REC_PIN P3_6
#define IR_REC_PIN_MODE {P3M1|=0x40;P3M0&=~0x40;}//P3_6高阻输入
#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#define ws2812b_IO P1_1//RGB灯的引脚
#define ws2812b_IO1 P3_5//RGB灯的引脚
#define WS_NUM 30 //RGB灯的个数
#include "lib/ADC.h"
//#include "lib/UART.h"
#include "lib/rgb.h"
#include "lib/ir.h"
//#include "lib/delay.h"
uint8 MOD = 1;
uint8 ZXBL = 1;
uint8 LED_SL = 30;
uint8 IR_KEY = 0;
uint8 ON_OFF = 0;
uint8 B_100us = 0;
uint8 GM_ADC = 0;
uint8 i;

typedef         unsigned char        u8;
typedef         unsigned int        u16;
typedef         unsigned long        u32;
void WS2812_bit(bit data_bit);
void SendData(u8 dat);
void Init_GPIO();
void WS2812_rand_color(u8 R, u8 G, u8 B);
void WS2812_WriteReset(void);
void reset(void);
void DisP_Color(u32 dat);
void delay_ms(u8 ms);
void Breathing_lamp_Alternate(unsigned int time);
void Breathing_lamp_Red(unsigned int time);
unsigned char LED_DAT;
#define bit0 (LED_DAT & 0x01)
#define bit1 (LED_DAT & 0x02)
#define bit2 (LED_DAT & 0x04)
#define bit3 (LED_DAT & 0x08)
#define bit4 (LED_DAT & 0x10)
#define bit5 (LED_DAT & 0x20)
#define bit6 (LED_DAT & 0x40)
#define bit7 (LED_DAT & 0x80)
void  delay_ms(u8 ms);
void Timer0Init(void)        //100微秒@24.000MHz
{
  AUXR &= 0x7f;                //定时器时钟12T模式
  TMOD &= 0xf0;                //设置定时器模式
  TL0 = 0x38;                        //设定定时初值
  TH0 = 0xff;                        //设定定时初值
}
void EX_1(void) interrupt 2 using 3{
  if(P3_3){
    delay(30);
    if(P3_3){
      MOD = MOD + 1;
      if(MOD >= 4){
        MOD = 0;
      }
    }
  }
  ZXBL = 0;
}
void EX_0(void) interrupt 0 using 1{
  if(P3_2){
    delay(30);
    if(P3_2){
      MOD = MOD + 1;
      if(MOD >= 4){
        MOD = 0;
      }
    }
  }
  ZXBL = 0;
}

void T_IRQ0(void) interrupt 1 using 2{
  ir_rec_callback();//红外接收回调函数
  if(ir_rx_available()){
    IR_KEY = ir_rx_ircode();
    B_100us = 1;
  }
}
void setup()
{

}
void Breathing_lamp_Red(unsigned int time)
{
    u8 j, x, num, move;
    u32 colors = {0xFF00FF,0xFF8000}; // 红色
    u32 color0, color1;
    u8 brightness = 0;
    for (num = 0; num < 1; num++)
    {
        color0 = colors;
        for (x = 0; x < 127; x++)
        {
            brightness = (brightness + 1) % 128;
            color1

免责声明:

本平台旨在开源共享精神,请勿发布敏感信息,任何违法信息我们将移交公安机关;

热门标签 更多

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-14 20:11 , Processed in 0.065959 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

返回顶部