📄 led.c
字号:
// 文件名:LEDTEST.c
//
// 目标器件: C8051F02x
//
// 编译工具: Silicon Laboratories IDE
//程序说明:
// 此程序用于测试8个发光二极管,正常情况下应轮流点亮.
//---------------------------------------------------------------------
// 头文件包含
//-------------------------------------------------------------------------
#include <c8051f020.h>
//-------------------------------------------------------------------------
// 16位特殊寄存器定义
//------------------------------------------------------------------------
sfr16 TMR3RL = 0x92;
sfr16 TMR3 = 0x94;
//---------------------------------------------------------------------------
// 常量定义
//----------------------------------------------------------------------
#define SYSCLK 2000000 //系统工作频率
//---------------------------------------------------------------------
//全局变量定义
//-----------------------------------------------------------------------------
unsigned char i=0xfe;
//---------------------------------------------------------------------------
// 函数定义
//---------------------------------------------------------------------------
void PORT_Init (void);
void Timer3_Init (int counts);
void Timer3_ISR (void);
//---------------------------------------------------------------------------
// 主程序
//----------------------------------------------------------------------------
void main (void) {
WDTCN = 0xde;
WDTCN = 0xad; //禁止看门狗定时器
PORT_Init ();
Timer3_Init(SYSCLK * 1024 );
REF0CN=0x02;
EA = 1;
while (1) {
}
}
//-------------------------------------------------------------------------
//函数名称: PORT_Init ()
//函数功能: 通用I/O口及交叉开关初始化
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//----------------------------------------------------------------------
void PORT_Init (void)
{
XBR2 = 0x40; /*使能交叉开关*/
P74OUT |= 0x000; /*推挽输出*/
}
//--------------------------------------------------------------------
//函数名称: Timer3_Init ()
//函数功能: 定时器3初始化
//入口参数: int counts
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//----------------------------------------------------------------------
void Timer3_Init (int counts)
{
TMR3CN = 0x00;
TMR3RL = -counts;
TMR3 = 0xffff;
EIE2 |= 0x01;
TMR3CN |= 0x04;
}
//-------------------------------------------------------------------
//函数名称: Timer3_ISR ()
//函数功能: 定时器3中断服务程序
//入口参数: 无
//出口参数: 无
//全局变量引用: 无
//调用模块: 无
//-------------------------------------------------------------------
void Timer3_ISR (void) interrupt 14
{
TMR3CN &= ~(0x80); /*清中断标志*/
P4=i; /*送数据到P4*/
i<<=1;
i = i | 0x01;
if(i==0xff)
i=0xfe;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -