www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]power down mode也就是sleep mode,狀態(tài)位PD被清零;程序中加入sleep()便可以使IC進(jìn)入sleep mode。在sleep mode下,若watchdog使能,則watchdog被清除后,繼續(xù)工作;oscillator停止工作;IO口保持進(jìn)入sleep mode時(shí)

power down mode也就是sleep mode,狀態(tài)位PD被清零;程序中加入sleep()便可以使IC進(jìn)入sleep mode。在sleep mode下,若watchdog使能,則watchdog被清除后,繼續(xù)工作;oscillator停止工作;IO口保持進(jìn)入sleep mode時(shí)的狀態(tài);MCLR 許要設(shè)置為邏輯高電平。從sleep mode醒來(lái)的幾種方式:1、外部MCLR的reset;2、若watchdog使能,可以利用watchdog喚醒,TO bit被清;3、INT喚醒,portB口有外部中斷的功能;另外在datasheet中也講解到利用外部中斷(如下幾種可以喚醒device)從sleep mode喚醒后,如果GIE=0被清除,device執(zhí)行sleep后的一條語(yǔ)句;如果GIE=1使能,喚醒后執(zhí)行sleep后的一條句子后,進(jìn)入中斷地址0x0004H 處執(zhí)行中斷內(nèi)容。通常在sleep后增加一條NOP()指令。另外在datasheet中提到在執(zhí)行sleep指令前、過(guò)程中、以及之后如有中斷,也可能不能使PD設(shè)置為0,使device進(jìn)入sleep mode。所以最好在執(zhí)行sleep mode前對(duì)PD位進(jìn)行一下檢查。下面的例程實(shí)現(xiàn)的功能是:正常工作時(shí)blink LED(RA0控制),外部中斷控制是否進(jìn)入sleep mode,進(jìn)入sleep mode時(shí),LED保持亮的狀態(tài)。再次RB0 外部中斷觸發(fā)后,awake up device,LED燈繼續(xù)閃爍。#include #define uchar unsigned char#define uint unsigned int// CONFIG#pragma config FOSC = HS // 12MHZ 外部晶振#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)#pragma config BOREN = ON // Brown-out Reset Enable bit (BOR enabled)#pragma config LVP = ON // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3/PGM pin has PGM function; low-voltage programming enabled)#pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)#pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)#define DELAY 1000uchar count;void delay(uint x) { uint y,z; for(y=x;y>0;y--) for(z=25;z>0;z--);}void init(void){ TRISB0=0; RB0=1; TRISB0=1; INTEDG=0; INTF=0; INTE=1; GIE=1; }void interrupt INT() { if(INTE&&INTF) { INTF=0; count++; TRISB0=0; RB0=1; TRISB0=1; }}void main(void){ uchar i,temp; TRISA=0x00; PORTA=0x00; init(); while(1) { RA0 =1; delay(DELAY); RA0 = 0; delay(DELAY); if((count%2)== 1) { RA0=1; SLEEP(); // go into sleep mode NOP(); } }}下面的內(nèi)容是從網(wǎng)上找的··

/SLEEP工作方式,單片機(jī)進(jìn)入休眠,可以節(jié)省電源,提高A/D轉(zhuǎn)換精度(此時(shí)AD轉(zhuǎn)換必須選擇內(nèi)部RC作為A/D轉(zhuǎn)換的時(shí)鐘源)

//SLEEP工作方式相愛(ài),芯片的振蕩器停診,因此沒(méi)有系統(tǒng)時(shí)鐘。在剛進(jìn)入休眠工作模式下,如看門狗定時(shí)器是能狀態(tài),系統(tǒng)會(huì)自動(dòng)把看門狗定時(shí)器的當(dāng)前計(jì)數(shù)值清零

//使其重新計(jì)數(shù),在SLEEP模式下,I/O端口保持執(zhí)行SLEEP指令之前的狀態(tài)。

//INTCON.GIE=1時(shí),喚醒SLEEP計(jì)數(shù)之后,先執(zhí)行SLEEP之后的一條語(yǔ)句,然后進(jìn)入中斷服務(wù)程序若不希望執(zhí)行SLEEP之后的那條語(yǔ)句,可加上NOP指令

//INTCON.GIN=0,則喚醒SLEEP,但不進(jìn)入中斷。

//INTCON.INTE=0,則不管GIE為何值,按鍵時(shí)都不能喚醒SLEEP

//INT中斷與休眠

#include

__CONFIG(0X3F39);//調(diào)試用

void DELAY_I(unsigned int);

void interrupt INT_ISR(void);

#define LED1 RB1

#define LED2 RB2

void main(void)

{

OPTION=0b1001101;//RB0/INT下降沿中斷

TRISB=0b11111001;//設(shè)置RB0/RB1為輸出

LED1=0;

LED2=0;

INTE=1;//中斷控制寄存器INTCON的位4INTE(INT引腳中斷使能)

GIE=1;//位7全局中斷使能

SLEEP();//進(jìn)入休眠工作方式

NOP();//SLEEP之后要加上NOP語(yǔ)句

LED1=1;//喚醒后LED1亮

while(1); //等待中斷

}

void interrupt INT_ISR(void)

{

char x;

if(INTF)

{

LED2=1;

DELAY_I(30);

INTF=0;

}

}

void DELAY_I(unsigned int n)

{

unsigned int j;

char k;

for(j=0;j

for(k=246;k>0;k--) NOP();

}

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

Nokia曾是手機(jī)界的王者,但因?yàn)橐恍┰?,在手機(jī)方面的成就逐漸被其他品牌趕超,為保持生存,Nokia將自己的觸角延伸至了智能穿戴與醫(yī)療健康領(lǐng)域,下面一起來(lái)看看Nokia在該領(lǐng)域的建樹(shù)吧。

關(guān)鍵字: sleep 智能穿戴

//軟件思路:選擇RAO做為模擬輸入通道; // 連續(xù)轉(zhuǎn)換4次再求平均值做為轉(zhuǎn)換結(jié)果 // 最后結(jié)構(gòu)只取低8位 // 結(jié)果送數(shù)碼管的低3位顯示 #include //包含內(nèi)部資源預(yù)定義...

關(guān)鍵字: ad轉(zhuǎn)換 pic16f877a picc

unsigned char eeprom_read(unsigned char addr);void eeprom_write(unsigned char addr, unsigned char value);這兩個(gè)函數(shù)...

關(guān)鍵字: pic16f877a eeprom使用

//*****************電子園PIC16F877A開(kāi)發(fā)板 SPI總線驅(qū)動(dòng)74595實(shí)驗(yàn)***************////CKP=0; 空閑為低電平//CKP=1; 空閑為高電平//STAT_CKE=0;...

關(guān)鍵字: pic16f877a spi總線 驅(qū)動(dòng)74595

用c語(yǔ)言寫的一個(gè)時(shí)鬧鐘程序單片機(jī)用16F877,主時(shí)鐘用20MHz,用32768作定時(shí)時(shí)間??梢詫?shí)現(xiàn)2路定鬧,每一路都可分別設(shè)置和開(kāi)關(guān),采用4x4鍵盤,16x2的字符型LCD顯示。連線在程序開(kāi)頭有...

關(guān)鍵字: pic16f877a 時(shí)鐘 程序 語(yǔ)言

/****************************************************標(biāo)題:萬(wàn)年歷**說(shuō)明:包含文件,*****************************...

關(guān)鍵字: pic16f877a 萬(wàn)年歷 程序

//數(shù)碼管顯示//★★★★★★★★★數(shù)碼管顯示★★★★★★★★★★★\\\\ //單征機(jī)型號(hào):PIC16F877A //功能描述:采用動(dòng)態(tài)掃描方式,初始時(shí)顯示123,當(dāng)按下RB0時(shí),數(shù)值加一,當(dāng)按下RB1時(shí),數(shù)值減一...

關(guān)鍵字: pic16f877a 數(shù)碼管顯示

/************************************************PIC16F877A 內(nèi)部EEPROM讀寫實(shí)驗(yàn)*******Author:hnrainDate:2010-12-26Ver...

關(guān)鍵字: pic16f877a 內(nèi)部eeprom 內(nèi)部函數(shù) 讀寫實(shí)驗(yàn)

/*Capture mode時(shí),外部CCP1事件觸發(fā)后,CCPR1H和CCPR1L將獲取Timer1的TMR1H和TMR1L中的數(shù)值對(duì)于CCP1的觸發(fā)事件,設(shè)置鍵CCP1Con中的相應(yīng)位CCP1M3--CCP1M0CCP...

關(guān)鍵字: capture mode pic16f877a
關(guān)閉