打印
[国产单片机]

应广单片机---MINI-C参考程序

[复制链接]
8342|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
工控秀才|  楼主 | 2012-4-20 20:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
应广科技做MCU算是很用心了,虽然出道比较晚,但是开发工具及开发环境等。
已经超出好几个较早的台湾品牌MCU。就拿开发语言来说,MINI-C就胜过其他的
纯汇编强多了,而且MINI-C的效率是非常高的。
以下是小生初期写的LED混色产品,给大家参考,不过丑话说在前面,由于小生也比较忙,小生只服务自己的已有客户或者潜在客户,
非小生的客户,小生不做技术支持,也不提供产品服务,请大家谅解。
#include "extern.h"
#define         WTD_ON     set1  clkmd.1
#define         WTD_OFF    set0  clkmd.1
#define         PA5_RESET_ON   set1 clkmd.0
#define         PA5_RESET_OFF  set0 clkmd.0
ON_ICE_DEBUG         EQU        0
//----------IO define-------------------------------
BIT          AC_SYN_INA            :PA.6   //out
BIT          LEDR_OUT              :PA.7   //out
BIT          AC_SYN_INB            :PA.0   // out
BIT          LEDB_OUT              :PA.3   // out
BIT          LEDG_OUT              :PA.4     //out, 低电平使能充电
BIT          AC_SYN_INC            :PA.5     //in,  此IO为低时,为充电满

//---------IO define end----------------------------
//
//---------constant define--------------------------
/*
LED  工作描述:
混色步骤:
0.绿色渐亮,兰色灭,红色渐亮;
1.绿色渐灭,兰色渐亮,红色渐灭;
2.绿色灭,兰色渐暗,红色渐亮;
3.绿色渐亮,兰色灭,红色渐暗;
4.绿色亮,兰色灭,红色渐亮;
5.绿色亮,兰色渐亮,红色渐暗;
6.绿色渐暗,兰色亮,红色渐亮;
7.绿色渐亮,兰色亮,红色亮;
8.绿色亮,兰色渐亮,红色亮;
9.绿色渐灭,兰色渐灭,红色渐灭
外部时钟输入,20ms.
*/
c_T16_us EQU  1
c_10ms  EQU  10
loop_100ms EQU  c_10ms * 1000 / c_T16_us
T16_Base        EQU             11764
//---------constant define end----------------------
//
//---------RAM define-------------------------------
word         t16_cnt          ;
word         t16_result       ;
byte         sys_status       ;
bit          f_key_busy          :sys_status.0
bit          f_key_release       :sys_status.1
bit          f_vusb_over_load    :sys_status.2
bit          f_vusb_power_on     :sys_status.3
bit          f_key_once_time     :sys_status.4
bit          f_reach_low_bat     :sys_status.5
bit          f_led_flash         :sys_status.6
bit          f_power_full        :sys_status.7
//
byte         sys_mode        ;
byte         timer_11ms_cnt  ;
byte         timer_100ms_cnt  ;
//
byte         pwmr_cnt;
byte         pwmg_cnt;
byte         pwmb_cnt;
byte         pwm_cnt;
//
//---------RAM define end --------------------------
//---------User program start-----------------------
void    io_init(void);
void    ad_init(void);
void    t16_init(void);
void    int_init(void);
void    key_scan(void);
void    delay_1ms(void);
/*
BIT          AC_SYN_IN            :PA.6   //in
BIT          RLED_OUT             :PA.7   //out
BIT          AC_SYN_IN            :PA.0   //in
BIT          BLED_OUT             :PA.3   //out
BIT          GLED_OUT             :PA.4   //out, 低电平使能充电
BIT          AC_SYN_IN            :PA.5   //in,  此IO为低时,为充电满
*/
void    io_init(void)
{
paph = 0x00;
pbph = 0x00;
pa   = 0x00;
pb   = 0xff;
pac  = 0x99;
pbc  = 0x00;
}

void    ad_init(void)
{
        ADCDI = 0x07;
        ADCM  = 0x00;
        ADCC  = 0x80;
}
void    t16_init(void)
{
        word   t16_index;
        T16M  = 0x2f;
        t16_index = 0;
        stt16  t16_index;  
         
}
void FPPA0 (void)
{
        word  temp_reg;
.ADJUST_OTP_IHRCR 4MIPS  // IHRC/2 = 8MIPS, WatchDog Disable, RAM 0,1 temporary be used
WTD_OFF;     // WatchDog Enable
io_init();
// ad_init();
t16_init();
t16_cnt = T16_Base;
fppen = 0x03;
if(gdio == 0)
{
sys_mode = 0;
        timer_11ms_cnt = 0;
        pwm_cnt    = 0;
        pwmr_cnt   = 0;
        pwmg_cnt   = 0;
        pwmb_cnt   = 0;               
gdio = 0xaa;  
}
WTD_ON;
while (1)
{     //a
  wdreset;
  ldt16   t16_result
  a     = (t16_result - t16_cnt) >> 8;
  if(a < 0x80)
  {
  tog   AC_SYN_INB;   
    t16_cnt += T16_Base;
    timer_11ms_cnt++;
    if(timer_11ms_cnt == 0)
    {
       sys_mode++;
       if(sys_mode > 9)
       {
        sys_mode = 0;
        }
     }
    if(sys_mode == 0)
    {
      if(pwmr_cnt < 254)
      {
         pwmr_cnt++;
       }
      if(pwmg_cnt < 254)
      {
          pwmg_cnt++;
       }
       pwmb_cnt = 0;
     }
    if(sys_mode == 1)
    {
      if(pwmr_cnt != 0)
      {
         pwmr_cnt--;
       }
      if(pwmg_cnt != 0)
      {
          pwmg_cnt--;
       }
      if(pwmb_cnt < 254)
      {
       pwmb_cnt++;
       }     
     }
    if(sys_mode == 2)
    {
      if(pwmr_cnt <254 )
      {
         pwmr_cnt++;
       }

       pwmg_cnt = 0;

      if(pwmb_cnt != 0)
      {
       pwmb_cnt--;
       }     
     }
    if(sys_mode == 3)
    {
      if(pwmr_cnt != 0)
      {
         pwmr_cnt--;
       }
      if(pwmg_cnt <254 )
      {
          pwmg_cnt++;
       }

       pwmb_cnt = 0;
     
     }
    if(sys_mode == 4)
    {
      if(pwmr_cnt != 0)
      {
         pwmr_cnt--;
       }
      if(pwmg_cnt != 0)
      {
          pwmg_cnt--;
       }
      if(pwmb_cnt < 254)
      {
       pwmb_cnt++;
       }     
     }
    if(sys_mode == 5)
    {
      if(pwmr_cnt != 0)
      {
         pwmr_cnt--;
       }
      pwmg_cnt = 0;
      if(pwmb_cnt <254)
      {
       pwmb_cnt++;
       }      
     }
    if(sys_mode == 6)
    {
      pwmg_cnt = 0;
      if(pwmb_cnt != 0)
      {
         pwmb_cnt--;
       }
      pwmr_cnt = 0;
     }
    if(sys_mode == 7)
    {
      if(pwmg_cnt < 254)
      {
         pwmg_cnt++;
       }
      if(pwmb_cnt < 254)
      {
         pwmb_cnt++;
       }
       pwmr_cnt = 0;
     }
    if(sys_mode == 8)
    {
       pwmg_cnt = 255;
       if(pwmb_cnt != 0)
       {
        pwmb_cnt--;
        }
       if(pwmr_cnt < 254)
       {
        pwmr_cnt++;
        }  
     }
    if(sys_mode == 9)
    {
       if(pwmg_cnt != 0)
       {
        pwmg_cnt--;
        }
       pwmb_cnt = 0;
       if(pwmr_cnt != 0)
       {
          pwmr_cnt--;
        }
     }
                                                  
                 } // if(a< 0x80)end
}   //aa
}
void FPPA1 (void)   //注意这里,两核心的好处,可以单独跑几路低频的PWM,很轻松。
{
while(1)
{
  if(pwmr_cnt >= pwm_cnt)
  {
     LEDR_OUT   = 1;
  }
  else
  {
     LEDR_OUT   = 0;
  }
//
  if(pwmg_cnt >= pwm_cnt)
  {
     LEDG_OUT   = 1;
  }
  else
  {
     LEDG_OUT   = 0;
  }
//
  if(pwmb_cnt >= pwm_cnt)
  {
     LEDB_OUT   = 1;
  }
  else
  {
     LEDB_OUT   = 0;
  }
     pwm_cnt++;
  if(pwm_cnt == 0)
  {
     pwm_cnt = 1;
   }   
  
}
}

相关帖子

沙发
董自祝| | 2015-10-30 16:31 | 只看该作者
大神!!!

使用特权

评论回复
板凳
yhy630| | 2015-12-30 16:37 | 只看该作者
学习了

使用特权

评论回复
地板
日你妹的代码| | 2018-3-26 16:49 | 只看该作者
牛B

使用特权

评论回复
5
ywc3000| | 2020-5-23 15:23 | 只看该作者
好,学习了

使用特权

评论回复
6
wyx135135| | 2020-9-4 18:20 | 只看该作者
你好.有技术支持.购你芯片要技术支持下 应广与别的MCU 不一样

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:杨R QQ:595142970, 群:72958773 T: 1351077九6五3,微公号,应广单片机 https://shop150007363.taobao.com

38

主题

286

帖子

11

粉丝