標(biāo)題:
關(guān)于51單片機(jī)電源寄存器的學(xué)習(xí)疑問
[打印本頁(yè)]
作者:
s26250
時(shí)間:
2019-3-10 20:03
標(biāo)題:
關(guān)于51單片機(jī)電源寄存器的學(xué)習(xí)疑問
學(xué)了51的掉電與空閑模式 寫了一段代碼 使用仿真 現(xiàn)象沒有如預(yù)期 預(yù)期實(shí)驗(yàn)現(xiàn)象:5s后掉電/空閑,外部中斷喚醒單片機(jī);
實(shí)際實(shí)驗(yàn)現(xiàn)象:按下外部中斷,沒有喚醒。
代碼如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
#define digTube P0
unsigned char code table[]=
{0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
sbit DULA = P2^0;
sbit WELA = P2^1;
uchar time = 0;
uchar tube = 0;
void Init();
void DelayMs(uint xms);
void Display(uint num);
void main()
{
Init();
while (1)
{
Display(tube);
}
}
void T0time() interrupt 1
{
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
time++;
if (time == 20)
{
time = 0;
tube++;
if (tube == 6)
{
ET0 = 0;
PCON = 0x01;
}
}
}
void EXIT0() interrupt 0
{
DelayMs(10);
if (INT0 == 0)
{
PCON = 0;
ET0 = 1;
}
}
void EXIT1() interrupt 2
{
DelayMs(10);
if (INT1 == 0)
{
PCON = 0;
ET0 = 1;
}
}
void Init()
{
TMOD = 0x01;
TH0 = (65536-45872)/256;
TL0 = (65536-45872)%256;
TR0 = 1;
ET0 = 1;
EX0 = 1;
EX1 = 1;
EA = 1;
}
void DelayMs(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=114;j>0;j--);
}
void Display(uint num)
{
uint shi, ge;
shi = num/10;
ge = num%10;
DULA = 0;
digTube = table[shi];
DelayMs(1);
DULA = 1;
WELA = 0;
digTube = table[ge];
DelayMs(1);
WELA = 1;
}
復(fù)制代碼
仿真圖如下:
無標(biāo)題.png
(113.33 KB, 下載次數(shù): 36)
下載附件
2019-3-10 20:03 上傳
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1