嵌入式设计应用
在众多的51系列单片机中,要算国内STC 公司的1T增强系列更具有竞争力,因他不但和8051指令、管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,这又很好地保护了你的劳动成果。
POF:是判断是上电复位还是中断复位和看门狗复位;
PD:置1时,进入power down模式,可由外部中断低电平触发或下降沿触发中断模式唤醒,也可启动掉电唤醒专用定时器唤醒。唤醒引脚有:INT0/P3.2 ,INT1/P3.3 ,INT/T0/P3.4 ,INT/T1/P3.5 ,/INT/RXD/P3.0 。。。
IDL:置位,进入IDLE模式,除CPU不工作外,其余继续工作,可由任何一个中断唤醒
GF1,GF0:两个通用工作标志位,用户可由任意使用
SMOD:波特率倍速位,置1,串口通讯波特率快一倍
外部中断唤醒:
#include
uchar temp=0xf0; //指示标志
//外部中断初始化
void InitInterrupt()
{
EX0=1;
IT0=1;
IT1=1;
EX1=1;
EA=1;
}
//延时函数1s
void delay(void) //误差 0us
{
unsigned char a,b,c;
for(c=167;c》0;c--)
for(b=171;b》0;b--)
for(a=86;a》0;a--);
// _nop_; //if Keil,require use intrins.h
}
//主函数
void main()
{
uchar num; //指示变量,用于赋值给p2口
InitInterrupt(); //中断初始化
while(1)
{
num++; //每次睡眠唤醒加1
P2=~num; //用p2口显示出来
PCON=0X02; //进入睡眠模式
}
}
//外部中断0
void inter0() interrupt 0
{
temp=~temp;
P1=temp;
delay();
}
//外部中断1
void inter1() interrupt 1
{
temp=~temp;
P1=temp;
delay();
}
//工作在空闲模式,可以使用定时器
#include
uchar temp=0xf0; //指示标志
//外部中断初始化
//延时函数1s
void delay(void) //误差 0us
{
unsigned char a,b,c;
for(c=167;c》0;c--)
for(b=171;b》0;b--)
for(a=86;a》0;a--);
// _nop_; //if Keil,require use intrins.h
}
void InitTimer0(void)
{
TMOD = 0x01;
TH0 = 0x4C;
TL0 = 0x00;
EA = 1;
ET0 = 1;
TR0 = 1;
}
//主函数
void main()
{
uchar num; //指示变量,用于赋值给p2口
InitTimer0();
while(1)
{
num++; //每次睡眠唤醒加1
P2=~num; //用p2口显示出来
PCON=0X01; //进入睡眠模式
}
}
void Timer0Interrupt(void) interrupt 1
{
TH0 = 0x4C;
TL0 = 0x00;
temp=~temp;
P1=temp;
delay();
//add your code here!
}
全部0条评论
快来发表一下你的评论吧 !