/*
*************************************************************
* 工程: FT60E210.prj
* 芯片: FT60E21X
* 内存: Flash 1KX14b, EEPROM 128X8b, SRAM 64X8b
* 作者:
* 公司:
* 版本:
* 日期:
*************************************************************
*/
/*头文件包含*/
#include "SYSCFG.h"
/*宏定义*/
#define LED PA4
/*全局变量定义*/
unsigned int g_usTicks = 0;
/*
*************************************************************
* 函数名:Systerm_Init
* 功能: 上电系统初始化
* 输入: 无
* 输出: 无
*************************************************************
*/
void Systerm_Init (void)
{
OSCCON = 0B01110000; /*OSCCON[6:4] 001=250K,010=500K,011=1M,...111=16M*/
INTCON = 0; /*暂禁止所有中断*/
PORTA = 0B00000000; /*PORTA输出寄存器*/
TRISA = 0B00000000; /*PA方向控制 0-输出 1-输入*/
WPUA = 0B00000000; /*PA端口上拉控制 1-开上拉 0-关上拉*/
OPTION = 0B00000100;
/*
OPTION[2:0]
PSA=0 Timer0 预分频比:000=2;001=4;010=8;011=16;100=32;101=64;110=128;111=256
PSA=1 WDT 后分频比:000=1;111=128
---------------------------------------
OPTION[3]=PSA
1 = 分频电路分配给WDT后分频器
0 = 分频电路分配给Timer0预分频器
---------------------------------------
OPTION[4]
计数器触发沿:0 = 上升沿;1 = 下降沿
---------------------------------------
OPTION[5]
Timer0输入源:0 = T0CKSRC (定时器);1 = PA2/T0CKI (计数器)
---------------------------------------
OPTION[6]
PA2中断沿:0 = 下降沿;1 = 上升沿
---------------------------------------
OPTION[7]
PORTA上拉:0 = 由WPUA控制;1 = 全局关闭
*/
PSRCA = 0B11111111; /*源电流设置最大*/
PSINKA = 0B11111111; /*灌电流设置最大*/
MSCON = 0B00110000;
//Bit5: PSRCAH4和PSRCA[4]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA
//Bit4: PSRCAH3和PSRCA[3]共同决定源电流。00:4mA; 11: 33mA; 01、10:8mA
//Bit3: UCFG1<1:0>为01时此位有意义。0:禁止LVR; 1:打开LVR
//Bit2: 快时钟测量慢周期的平均模式。0:关闭平均模式;1:打开平均模式
//Bit1: 0:关闭快时钟测量慢周期;1:打开快时钟测量慢周期
//Bit0: 0:睡眠时停止工作:1: 睡眠时保持工作。
// 当T2时钟不是选择指令时钟的时
}
/*
*************************************************************
* 函数名:Timer0_Init
* 功能: 定时器初始化,定时时间1ms@16MHz
* 输入: 无
* 输出: 无
* 说明:设置TMR0定时时长=(1/系统时钟频率)*指令周期*预分频值*计数
* 1ms=1/16000000*4*32*(255-125)
*************************************************************
*/
void Timer0_Init(void)
{
TMR0 = 130;
T0IF = 0; /*清空T0软件中断*/
}
/*
*************************************************************
* 函数:
* 功能:中断入口
* 输入: 无
* 输出: 无
*************************************************************
*/
void interrupt ISR(void)
{
//定时器0的中断处理
if(T0IE && T0IF)
{
TMR0 = 130;
T0IF = 0;
/*添加代码*/
g_usTicks++;
}
}
/*
*************************************************************
* 函数:
* 功能:
* 输入: 无
* 输出: 无
*************************************************************
*/
main()
{
unsigned int time,gap;
unsigned char portValue = 0B00010111,loopCnt=0;
Systerm_Init();/*系统初始化*/
Timer0_Init();
GIE = 1; /*开中断*/
T0IE = 1; /*开定时器/计数器0中断*/
while(1)
{
if(time != g_usTicks)
{
time = g_usTicks;
if(++gap > 500)
{
gap = 0;
if(++loopCnt > 4) loopCnt = 0;
switch(loopCnt)
{
case 0:portValue = 0b00010110;break;
case 1:portValue = 0b00010101;break;
case 2:portValue = 0b00010011;break;
case 3:portValue = 0b00000111;break;
case 4:portValue = 0b00010111;break;
default:break;
}
PORTA = portValue;
}
}
}
}
//===========================================================