微控制器 PADAUK PFC161 控制LED燈發(fā)光一個項目演示
應(yīng)廣單片機躍龍PFC161基于MINI-C的應(yīng)廣單片機編程測試代碼,7觸摸鍵8位MTP類型單片機PA5的2MS脈沖波
包含一個1MS定時器與1個PA6輸入按鍵反轉(zhuǎn)PA4輸出,以及PA5的2MS脈沖波,PA3的1秒反轉(zhuǎn)信號
高抗干擾(High EFT)SOT23-6 SOP8A SOP8B系列
特別適用于 AC 電源供電的、阻容降壓電路的、需要較強抗干擾能力的,
或有高 EFT 安規(guī)測試要求(±4KV)的產(chǎn)品
工作溫度范圍:-40°C ~ 85°C ESD > 8 KV
系統(tǒng)特性
1. 2KW MTP 程序儲存器 (可編程1,000次以上)
2. 128 Bytes 數(shù)據(jù)儲存器
3. 最大7 IO引腳可選擇為觸摸按鍵
4. 一個16位定時器
5. 兩個8位定時器可產(chǎn)生6/7/8-bit PWM波形
6. 提供一個比較器
7. 最大8 IO引腳帶可選擇的上拉/下拉電阻
8. 每個IO 引腳都可設(shè)定喚醒功能
9. Bandgap電路提供1.20V參考電壓
10. 時鐘源:IHRC、ILRC和EOSC (XTAL)
11. 8 級可選擇的LVR(Low Voltage Reset)復(fù)位電壓從1.8V到4.5V
12. 16 級可選擇的LVD (Low Voltage Detect)檢測電壓從1.8V到4.5V
13. 三個可選擇的外部中斷引腳
CPU 特性
1. 8位高性能精簡指令集CPU
2. 提供86 個有效指令
3. 大部分指令都是單周期(1T)指令
4. 可程序設(shè)定的堆棧指針和堆棧深度
5. 數(shù)據(jù)存取支持直接和間接尋址模式
6. 用數(shù)據(jù)存儲器即可當(dāng)作間接尋址模式的數(shù)據(jù)指針(index pointer)
7. 寄存器地址空間、數(shù)據(jù)存儲空間、MTP程序空間三者互相獨立
引腳分配及功能說明
PFC161-EY10 (ESSOP10-150mil
系統(tǒng)寄存器
+0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | |
0x00 | FLAG | = | SP | CLKMD | INTEN | INTRQ | T16M | 一 |
0x08 | MISC | = | EOSCR | INTEGS | PADIER | PBDIER | 一 | |
0x10 | PA | PAC | PAPH | PAPL | PB | PBC | PRPH | PBPL |
0×18 | GPCC | GPCS | 一 | TM2C | TM2CT | TM2S | TM2B | |
0x20 | TS | TCC | TKE² | TKE1 | ||||
0x28 | TPS2 | 一 | TKCH | TKCL | LVDC | |||
0x30 | TM3C | TM3CT | TM3S | TM3B |
FLAG:標志寄存器
SP:堆棧指針寄存器
CLKMD:時鐘控制寄存器
EOSCR:外部晶體振蕩器控制寄存器
INTEN:中斷允許寄存器
INTRQ:中斷請求寄存器
INTEGS:中斷緣選擇寄存器
MISC:雜項寄存器
PA:端口 A 數(shù)據(jù)寄存器
PAC:端口 A 控制寄存器
PAPH:端口 A 上拉控制寄存器
PAPL:端口 A 下拉控制寄存器
PADIER:端口 A 數(shù)字輸入啟用寄存器
PB:端口 B 數(shù)據(jù)寄存器
PBC:端口 B 控制寄存器
PBPH:端口 B 上拉控制寄存器
PBPL:端口 B 下拉控制寄存器
PBDIER:端口 B 數(shù)字輸入啟用寄存器
GPCC:比較器控制寄存器
GPCS:比較器選擇寄存器
T16M:Timer16 控制寄存器
TM2C / TM3C:Timer2 / Timer3 控制寄存器
TM2CT / TM3CT:Timer2 / Timer3 計數(shù)寄存器
TM2S / TM3S:Timer2 / Timer3 分頻寄存器
TM2B / TM3B:Timer2 / Timer3 上限寄存器
TS:觸摸選項寄存器
TCC:觸摸充電控制寄存器
TKE1 / TKE2:觸摸按鍵使能寄存器
TKCH / TKCL:觸摸按鍵充電計數(shù)高/低位寄存器
LVDC:低電壓檢測寄存器
TPS2:觸摸參數(shù)設(shè)置寄存器
應(yīng)廣單片機躍龍PFC161基于MINI-C的應(yīng)廣單片機編程測試代碼,包含一個1MS定時器與1個PA6輸入按鍵反轉(zhuǎn)PA4輸出,以及PA5的2MS脈沖波,PA3的1秒反轉(zhuǎn)信號
#include "extern.h"
//================================================================================
.ramadr 0
word gw_Point;
.ramadr system
word gw_T16Cnt;
word gw_Cnt;
byte gb_Flag;
bit b_T16_1ms : gb_Flag.0 //1MS
bit b_1S_F : gb_Flag.1 //1S
byte gb_KeyDebounce;
byte gb_KeyNew;
byte gb_KeyOld;
byte gb_KeyValue;
//------------------------------------------------------------
//LED equ PA.3 // 設(shè)置PA3為LED輸出
//PON equ PA.4 // 設(shè)置PA4為電源控制
//PWM equ PA.5 // 設(shè)置PA5為PWM輸出
//KEY equ PA.6 // 設(shè)置PA6為按鈕控制
D_KEYPORT equ 0b_0100_0000 // PA6 按鍵
D_KEY1 equ 0b_0100_0000 // PA6 按鍵
D_KeyBounce equ 30*1000/1024 // 30ms
//================================================================================
void Test_DirectScanKey(void)
{
if(b_T16_1ms)
{
b_T16_1ms = 0;
a = pa & D_KEYPORT;
a ^= D_KEYPORT;
if(gb_KeyNew == a)
{//讀到值相同值,Debouce
if(--gb_KeyDebounce == 0)
{//Debounce結(jié)束
if(gb_KeyOld != gb_KeyNew)
{
gb_KeyValue = gb_KeyNew;
gb_KeyOld = gb_KeyNew;
}
}
}
else
{
gb_KeyNew = a;
gb_KeyDebounce = D_KeyBounce;
}
}
}
//================================================================================
void Test_KeyProcess(void)
{
//處理Key1
if(gb_KeyValue == D_KEY1)
{
gb_KeyValue = 0;
//pa4 電平翻轉(zhuǎn)
a = pa;a ^= 0x10;pa = a;
}
}
//================================================================================
void FPPA0(void)
{
.ADJUST_IC SYSCLK=IHRC/4, IHRC=16MHz, VDD=5V;
clkmd.En_WatchDog = 1; // WatchDog Enable
// Insert Initial Code
//注:無PA.1,PA.2腳位
//未使用端口需有防漏電設(shè)置,如加內(nèi)部上拉
PAPH = 0b0100_0000; //上拉控制寄存器,控制上拉高相應(yīng)的引腳(1:啟用,0:停用
PAPL = 0b0000_0000; //下拉控制寄存器,控制下拉高相應(yīng)的引腳(1:啟用,0:停用)
PAC = 0b1011_1001; //數(shù)據(jù)控制寄存器(1:輸出模式,0:輸入模式)
PA = 0b0000_0000; //數(shù)據(jù)寄存器
.delay 4000;
//------------------------------------------------------------
//清除RAM
gw_Point = _SYS(RAM_SIZE) - 1;
a = 0;
do
{
*gw_Point = a;
} while (--gw_Point$0);
//------------------------------------------------------------
//初始化定時器 定時1MS
gw_Point = 1024 - 1000;
stt16 gw_T16Cnt;
$ t16m SYSCLK,/4,bit10;
intrq = 0;
inten.2 = 1;
engint;
//------------------------------------------------------------
while (1)
{
// ...
if(b_1S_F)
{
b_1S_F = 0;
//PA3 反轉(zhuǎn)
a = pa; a ^= 0x08;pa = a;
}
Test_DirectScanKey();
Test_KeyProcess();
.wdreset;
}
}
//================================================================================
void Interrupt (void)
{
pushaf;
if (Intrq.T16)
{ // T16 Trig
// User can add code
Intrq.T16 = 0;
//...
stt16 gw_T16Cnt;
//pa5 電平翻轉(zhuǎn)
a = pa;a ^= 0x20;pa = a;
b_T16_1ms = 1;
gw_Cnt++;
if(gw_Cnt > 999)
{//1S計數(shù)
gw_Cnt = 0;
b_1S_F = 1;
}
}
popaf;
}
應(yīng)廣單片機產(chǎn)品應(yīng)用領(lǐng)域
玩具類:
RF/IR遙控直升飛機,遙控車,PS游戲機,兒童智能玩具,動物語音玩具,游戲方向盤,兒童學(xué)習(xí)機等
家電類:
電磁爐、電炒鍋、電飯煲、熱水壺,健康秤、冰箱控制系統(tǒng)、遙控器、電風(fēng)扇、洗衣機控制模塊、消毒柜、智能家居系統(tǒng),遙控?zé)艟叩?/p>
電子消費類:
電子萬年歷、溫度濕度計、跑步計速器、按摩器、數(shù)碼復(fù)讀錄音、筆電子禮品、電子密碼鎖,鎳氫,鋰電池充電器,超聲波測距,防盜報警器,燈飾控制,舵機
其它:
智能溫濕度記錄儀、智能溫控器、計時器、計數(shù)器、電機調(diào)速控制器、鼠標、鍵盤、移動存貯盤