国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

電源管理代碼

2022-10-31 10:20 作者:沐笙--ms  | 我要投稿


#include "ioCC2530.h"

#define LED1 P1_0

#define LED2 P1_1

#define LED3 P1_3

#define LED4 P1_4

#define SW P1_2

/********************定義數(shù)據(jù)類型***************************/

#define uchar unsigned char? ? ? ? ? ? ? ? ? ??

#define uint16 unsigned short int? ? ? ? ? ? ?//占用1個(gè)字節(jié)

#define uint32 unsigned long int? ? ? ? ? ? ? //占用2個(gè)字節(jié)

/*****************參數(shù)類型定義(枚舉型)********************/

enum SYSCLK_SRC{RC_16M,XOSC_32M};? ? ? ? ? ? ?//系統(tǒng)時(shí)鐘源參數(shù)

enum POWER_MODE{PM_IDLE,PM_1,PM_2,PM_3};? ? ? //系統(tǒng)電源管理模式參數(shù)

/********************************************

函數(shù)名稱:System_Init()

函數(shù)功能:系統(tǒng)初始化(IO、LED、外部中斷)

入口參數(shù):無(wú)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void System_Init()

{

? P1SEL = 0x00;? ? // (P1SEL &= ~0x1F)

? P1DIR |= 0x1B;? ?//? 0入1出

? LED1 = 0;

? LED2 = 0;

? LED3 = 0;

? LED4 = 0;

? PICTL &= ~0x02;? ? //配置P1_2為上升沿觸發(fā)中斷

? P1IFG &= ~0x04;? ? //清除P1_2為中斷標(biāo)識(shí)

? P1IF = 0;? ? ? ? ? //清除P1中斷標(biāo)識(shí)

}

/********************************************

函數(shù)名稱:ClockSourceSelcet()

功? ? 能:系統(tǒng)時(shí)鐘選擇

入口參數(shù):時(shí)鐘選擇(Source:XOSC_32M 或 RC_16M)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void SystemClockSourceSelcet(enum SYSCLK_SRC Source)

{

? uchar CLKconcmd;? ? ? ? ? ? ? ? ? ? //用于讀取晶振配置值

? uchar CLKconsta;? ? ? ? ? ? ? ? ? ? //用于讀取晶振實(shí)時(shí)振動(dòng)值

? if(Source == XOSC_32M)? ? ? ? ? ? ? //傳遞過(guò)來(lái)的是32M

? {

? ? CLKCONCMD &= 0x80;

? }

? else if(Source == RC_16M)? ? ? ? ? ?//傳遞過(guò)來(lái)的是16M

? {

? ? CLKCONCMD &= 0x80;

? ? CLKCONCMD |= 0x49;

? }

? CLKconcmd = CLKCONCMD;? ? ? ? ? ? ? //讀取晶振配置值

? do

? {

? ? CLKconsta = CLKCONSTA;? ? ? ? ? ? //讀取實(shí)時(shí)振動(dòng)值

? }while(CLKconsta != CLKconcmd);? ? ?//判斷晶振實(shí)時(shí)振動(dòng)值是否達(dá)到配置值(等待時(shí)鐘配置)

}

/********************************************

函數(shù)名稱:delay()

功? ? 能:軟件延時(shí)

入口參數(shù):time--延時(shí)循環(huán)執(zhí)行次數(shù)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void delay(unsigned int time)

{?

? ? short int i;

? ? uchar j;

? ? for(i = 0; i < time; i++)

? ? {? for(j = 0; j < 240; j++)

? ? ? ? {? ?asm("NOP");? ? // asm是內(nèi)嵌匯編,nop是空操作,執(zhí)行一個(gè)指令周期

? ? ? ? ? ? asm("NOP");

? ? ? ? ? ? asm("NOP");

? ? ? ? ?}??

? ? ?}??

}

/********************************************

函數(shù)名稱:LED_Blink()

功? ? 能:根據(jù)需要閃爍的LEDx(LED1、LED2、LED3、LED4),進(jìn)行對(duì)應(yīng)控制

入口參數(shù):LED1、LED2、LED3、LED4

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void LED_Blink(uchar LEDx)

{

? uchar i;

? switch(LEDx)

? {

? case 1:

? ? for(i=0;i<5;i++)

? ? {

? ? ? LED1 = 1;

? ? ? delay(2000);

? ? ? LED1 = 0;

? ? ? delay(2000);

? ? }

? ? break;

? case 2:

? ? for(i=0;i<5;i++)

? ? {

? ? ? LED2 = 1;

? ? ? delay(2000);

? ? ? LED2 = 0;

? ? ? delay(2000);

? ? }

? ? break;

? case 3:

? ? for(i=0;i<5;i++)

? ? {

? ? ? LED3 = 1;

? ? ? delay(2000);

? ? ? LED3 = 0;

? ? ? delay(2000);

? ? }

? ? break;

? case 4:

? ? for(i=0;i<5;i++)

? ? {

? ? ? LED4 = 1;

? ? ? delay(2000);

? ? ? LED4 = 0;

? ? ? delay(2000);

? ? }

? ? break;

? }

}

/********************************************

函數(shù)名稱:POWER_MODE_Set()

功? ? 能:配置電源管理工作模式

入口參數(shù):四種工作模式:PM_IDLE、PM_1、PM_2、PM_3

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void POWER_MODE_Set(enum POWER_MODE PM)

{

? if(PM == PM_IDLE)? ? ? ? ?//空閑模式

? {

? ? SLEEPCMD &= ~0x03;

? }

? else if(PM == PM_1)? ? ? ?//模式1

? {

? ? SLEEPCMD &= ~0x20;

? }

? else if(PM == PM_2)? ? ? ?//模式2

? {

? ? SLEEPCMD &= ~0x01;

? }

? else if(PM == PM_3)? ? ? ?//模式3

? {

? ? SLEEPCMD &= ~0x00;

? }

? PCON |= 0x01;? ? ? //模式配置完畢,強(qiáng)制進(jìn)入所選電源管理模式

}

/********************************************

函數(shù)名稱:SLEEP_Timer_Set()

功? ? 能:配置睡眠定時(shí)器

入口參數(shù):定時(shí)時(shí)間值

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void SLEEP_Timer_Set(uint16 sec)

{

? uint32 sleeptime = 0;

? sleeptime |= (uint32)ST0;? ? ? ? //取出ST寄存器系列中ST0的值(低8位)

? sleeptime |= (uint32)ST1 << 8;? ?//取出ST系列寄存器中ST1的值(中8位)

? sleeptime |= (uint32)ST2 << 16;? //取出ST系列寄存器中ST2的值(高8位)

? /*************以上程序,即為讀取睡眠定時(shí)器當(dāng)前實(shí)時(shí)值 ST0、ST1、ST2至sleeptime**********/

??

? /*************以下程序,即為計(jì)算下一次需要喚醒的時(shí)間值 = 上述所讀取的值 + sec值*********************/

? sleeptime = sleeptime +(uint32)sec * (uint32)32753;? //定時(shí)器比較值

? while((STLOAD & 0x01) == 0);? ? ?//等待到該為允許被導(dǎo)入

??

? /*********以下程序,即為定時(shí)器比較值被配置**********/

? ST0 = (uchar)sleeptime;? ? ? ? ? ? //將32位的sleeptime,只保留最低8位

? ST1 = (uchar)(sleeptime >> 8);? ? ?//將32位的sleeptime,只保留最中8位

? ST2 = (uchar)(sleeptime >> 16);? ? //將32位的sleeptime,只保留最高8位

}

/********************************************

函數(shù)名稱:SLEEP_ISR()

功? ? 能:睡眠定時(shí)器中斷服務(wù)函數(shù)

入口參數(shù):無(wú)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

#pragma vector = ST_VECTOR

__interrupt void SLEEP_ISR()

{

? EA = 0;

? STIF = 0;? ? //清除睡眠定時(shí)器中斷標(biāo)識(shí)

? STIE = 0;? ? //禁止睡眠定時(shí)器進(jìn)入中斷

? EA = 1;

}

/********************************************

函數(shù)名稱:P1_EINT_ISR()

功? ? 能:睡眠外部中斷服務(wù)函數(shù)

入口參數(shù):無(wú)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

#pragma vector = P1INT_VECTOR

__interrupt void P1_EINT_ISR()

{

? EA = 0;

? if(P1IFG & 0x04)? ? ? //判斷是否是P1.2中斷來(lái)

? {

? ? if(SW == 0)? ? ? ? ?//判斷按鈕(SW)是否按下(低電平有效)

? ? {

? ? ? delay(100);? ? ? ?//延遲消抖

? ? ? while(SW == 0);

? ? ? P1IFG &= ~0x04;? ?//清楚P1.2外部中斷標(biāo)識(shí)

? ? ? P1IF = 0;? ? ? ? ?//清楚P1端口組中斷標(biāo)識(shí)

? ? }

? }

? EA = 1;

}

/********************************************

函數(shù)名稱:IRClear()

功? ? 能:睡眠定時(shí)器中斷標(biāo)識(shí)清楚

入口參數(shù):無(wú)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void IRClear()

{

? IRCON &= ~0x80;

? IEN0 |= (0x01 << 5);

}

/********************************************

函數(shù)名稱:main()

功? ? 能:程序主函數(shù)

入口參數(shù):無(wú)

出口參數(shù):無(wú)

返 回 值:無(wú)

********************************************/

void main()

{

? SystemClockSourceSelcet(XOSC_32M);? ?//設(shè)置時(shí)鐘頻率

? System_Init();? ? ? ? ? ?//系統(tǒng)初始化(IO、LED、外部中斷)

? while(1)

? {

? ? /*************************設(shè)置空閑模式*************************/

? ? LED_Blink(1);

? ? SLEEP_Timer_Set(2);? ? ? //設(shè)置睡眠定時(shí)器時(shí)間間隔2s

? ? IRClear();

? ? POWER_MODE_Set(PM_IDLE);? ? ? //設(shè)置電源管理進(jìn)入空閑模式

? ? /*************************PM_1模式設(shè)置*************************/

? ? LED_Blink(2);

? ? SLEEP_Timer_Set(3);? ? ? //設(shè)置睡眠定時(shí)器時(shí)間間隔3s

? ? IRClear();

? ? POWER_MODE_Set(PM_1);? ? ? //設(shè)置電源管理進(jìn)入空閑模式

? ? /*************************PM_2模式設(shè)置*************************/

? ? LED_Blink(3);

? ? SLEEP_Timer_Set(4);? ? ? //設(shè)置睡眠定時(shí)器時(shí)間間隔4s

? ? IRClear();

? ? POWER_MODE_Set(PM_2);? ? ? //設(shè)置電源管理進(jìn)入空閑模式

? ? /*************************PM_3模式設(shè)置*************************/

? ? LED_Blink(4);

? ? POWER_MODE_Set(PM_2);? ? ? //設(shè)置電源管理進(jìn)入空閑模式

? ? P1IEN |= 0x04;? ? ? ? ? ? ?//使能P1.2中斷功能

? ? IEN2|= 0x10;? ? ? ? ? ? ? ?//使能P1端口組中斷

? ? POWER_MODE_Set(PM_2);? ? ? //設(shè)置電源管理進(jìn)入空閑模式

? }

}


電源管理代碼的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
广德县| 城市| 康乐县| 任丘市| 威信县| 桓仁| 固安县| 东宁县| 榆树市| 盐津县| 深水埗区| 山西省| 田林县| 随州市| 河北省| 景宁| 延边| 隆尧县| 铜梁县| 库尔勒市| 五家渠市| 林口县| 梨树县| 嘉善县| 清水县| 舞阳县| 吕梁市| 汽车| 涿州市| 财经| 湖口县| 堆龙德庆县| 三门峡市| 冀州市| 台安县| 哈密市| 景谷| 武义县| 武安市| 南川市| 鄂温|