2、第二种分析
#include "config.h"
#define LED1 1<<16
#define LED2 1<<17
#define LED3 1<<18
#define LED4 1<<19
#define LED1_TO_4 (LED1|LED2|LED3|LED4)
#define BEEPCON 1 << 5
#define UART_BPS 115200 // 定义通讯波特率
/****************************************************************************
* 名称:Time0Init()
* 功能:初始化Timer
****************************************************************************/
void Timer0Init0( void )
{
T0PR = 99; // 设置定时器分频为频率,得是Hz
T0MCR = 0x03; // 匹配通道匹配中断并复位T0TC
T0MR0 = 110592/2; // 比较值(1S定时值)
T0TCR = 0x03; // 启动并复位T0TC
T0TCR = 0x01;
}
/****************************************************************************
* 名称:main()
* 功能:
****************************************************************************/
int main(void)
{
uint32 i=0; //这不需要计数
Timer0Init0(); // 初始化定时器
PINSEL0 = 0x00000000; // 设置管脚连接GPIO
IO0DIR = BEEPCON; // 设置I/O为输出
IO1DIR = LED1_TO_4;
IO1SET = LED1_TO_4;
while(1)
{
/********************************第0.5秒执行的动作*********************************/
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01; // 清除中断标志 ,
if ( (IO1PIN&LED1) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED1;
}else {
IO1CLR = LED1;
}
/********************************第1秒执行的动作*********************************/
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01;
if ( (IO1PIN&LED1) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED1;
}else {
IO1CLR = LED1;
}
if ( (IO1PIN&LED2) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED2;
} else {
IO1CLR = LED2;
}
/********************************第1.5秒执行的动作*********************************/
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01;
if ( (IO1PIN&LED1) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED1;
} else {
IO1CLR = LED1;
}
/********************************第2秒执行的动作*********************************/
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01;
if ( (IO1PIN&LED1) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED1;
} else {
IO1CLR = LED1;
}
if ( (IO1PIN&LED2) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED2;
} else {
IO1CLR = LED2;
}
if ( (IO1PIN&LED3) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED3;
} else {
IO1CLR = LED3;
}
/********************************第2.5秒执行的动作*********************************/
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01;
if ( (IO1PIN&LED1) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED1;
} else {
IO1CLR = LED1;
}
/********************************第3秒执行的动作*********************************/
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01;
if ( (IO1PIN&LED1) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED1;
} else {
IO1CLR = LED1;
}
while( (T0IR&0x01) == 0 ); // 等待定时时间到 ,中断寄存器包含4 个位用于匹配中断,4 个位用于捕获中断。如果有中断产生,IR 中的对应位会置位,否则为0 。
T0IR = 0x01;
if ( (IO1PIN&LED2) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED2;
}else {
IO1CLR = LED2;
}
if ( (IO1PIN&LED3) == 0 ) //IO1SET&LED1是什么意思,IO1PIN&LED是什么意思,及两者的区别
{
IO1SET = LED4;
}else {
IO1CLR = LED4;
}
}
return 0;
}
文章评论(0条评论)
登录后参与讨论