📄 led.c
字号:
/****************************************************************************/
//机构名称:宙环科技实验室
//网站地址:http://www.zhlab.cn
//文件名称:led.c
//起止日期:24.DEC.2008.WED. --> 26.DEC.2008.FRI.
//软件版本:v0.1
//编制人员:Z
//时钟频率:3.0625MHz
//序列号码:
//功能说明:让LED以2Hz频率闪烁
//微处理器:C8051F330
//编译环境:Keil C51 V8.16A
/****************************************************************************/
#include <C8051F330.h> //C8051F330寄存器头文件
sbit LED = P0^2; //定义LED硬件引脚
void Reset_Sources_Init(void)
{
int i = 0;
VDM0CN = 0x80;
for (i = 0; i < 350; i++); //等待电源电压稳定(100us)
RSTSRC = 0x04; //允许侦测时钟丢失
}
void Timer_Init(void)
{
CKCON = 0x00; //定时器2使用TMR2CN中的T2XCLK位定义的时钟
TMR2RLL = 0xC6; //定时器重载值 溢出时间间隔0.25S
TMR2RLH = 0x06;
TMR2L = 0xC6;
TMR2H = 0x06;
TMR2CN = 0x04; //允许定时器2 定时器2外部时钟为系统时钟/12
}
void Port_IO_Init(void)
{
P0MDOUT = 0x04; //P0.2推挽输出
XBR1 = 0xC0; //允许交叉开关 禁止弱上拉
}
void Oscillator_Init(void)
{
OSCICN = 0x80; //系统时钟3.0625MHz
}
void Interrupts_Init(void)
{
IE = 0x20; //允许定时器2中断
EA = 1; //允许总中断
}
void main(void)
{
PCA0MD &= ~0x40; //向WDTE位写‘0’来禁止WDT
Reset_Sources_Init();
Timer_Init();
Port_IO_Init();
Oscillator_Init();
Interrupts_Init();
while(1) //等待中断发生...
{
;
}
}
void TMR2_ISR(void) interrupt 5 //定时器2中断
{
TF2H=0; //清除定时器2高字节溢出标志
LED = ~LED; //改变LED状态
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -