應廣微控制器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...