應廣微控制器adc 應廣微控制器adc和pwm例程

2021-10-16 14:08:43 字數 1807 閱讀 7966

應廣微控制器otp單核系列主要有以下幾個系列,15x系列為純io,13x系列為帶12bit的adc,17x系列為帶8bit的adc,現在我用pms132b寫個adc/pwm例程,方便大家快速上手.不多說,上**.

#include    "extern.h"

/**********adc*****************/

word usadcsum;

word usadcsumbak;

bit        thr             :pb.0;

bit        pwm             :pa.3;

/*定時器初始化*/

void pwmtmr2init ( void )

tm2ct = 0x0;/*計數值*/

//pwm duty

tm2b = 0;//start_pwm_cnt;

//8 位 pwm, 預分頻 = 64, 分頻 = 2, frq=970hz

tm2s = 0b0_11_00000;

//0010=hirc輸出 ,01= pb2,10=pa3,11=pb4, pwm模式,禁用極性反轉

tm2c = 0b0010_10_1_0;

void getadc(void)    //adc取樣處理

byte  uccnt;

$ adcc enable, thr    ;

//8次取樣做平均/

uccnt=8;

//初始化

usadcsum=0;

while ( uccnt-- )

ad_start=1;

.wait1    ad_done;

//adc 取樣值,12bit實際使用8bit

usadcsum +=adcrh;

//取平均值輸出

usadcsum=usadcsum>>3;  //temp除以8

void    fppa0 (void)

.adjust_ic    sysclk=ihrc/2        //    sysclk=ihrc/2

//    insert initial code

$ thr  in;

$ pwm  out,low;

/*bit config start

b7:5@001=2v參考;000=vdd;

b4@0f通道選擇器

b3:2@f通道band-gap參考電壓選擇

b1:0@00=rsv

bit config end*/

adcrgc=0b000_0_00_00;

pwmtmr2init();

while (1)

getadc();

/*當pwm占空比為0,會有關不斷的現象,要做特殊處理*/

if(usadcsumbak!=usadcsum)

usadcsumbak=usadcsum;

/*更新占空比*/

tm2b=usadcsum$0;

/*pwm輸出為0*/

if(!usadcsum$0)

/*關閉pwm輸出*/

tm2c = 0b0010_00_1_0;

pwm=0;

else

/*開啟pwm輸出*/

tm2c = 0b0010_10_1_0;

void    interrupt (void)

pushaf;

if (intrq.t16)

{    //    t16 trig

//    user can add code

intrq.t16    =    0;

popaf;

應廣微控制器adc 應廣微控制器選型表 2014

series 系列型號 fppa 核心數otp rom k word ram byte adc bit ch i olcd bit ch pwmint special functions package re.pms150 s08 sop8 2501c,12c509 pmc150 s08 sop8 ...

應廣微控制器休眠和按鍵喚醒

對應電池供電的產品,在不使用的時候,微控制器和外設都應該進入休眠狀態,用於減少對電池電量消耗.在使用的時候又能夠通過按鍵,或是其他訊號喚醒系統,然後進入正常工作狀態.在電壓v3.3v的情況下,應廣微控制器的休眠電流幾乎在2ua以下,經常測到都是一點幾ua.非常不錯 那麼應廣微控制器的低功耗和按鍵喚醒...

應廣微控制器應用之 呼吸燈

在很多的微控制器方案應用中,很多都會用到到指示燈,比如流水燈,rgb七彩燈,對了還有呼吸燈.現在用pms150c做個demo,稍作修改就可以用在pms152,pms132b燈應廣其他系列的微控制器中.不多說,上 一切盡在 中.include extern.h 定時時間是否到了cinit bit fl...