|
本帖最后由 mdq123 于 2012-4-21 17:34 编辑
#include "config.h"
uint8 find = 2;
uint32 commentyin[10] = {0x03f0,0x060, 0x05b0, 0x04f0, 0x0660, 0x06d0, 0x07d0, 0x0270, 0x07f0, 0x06f0};
#define led 1<<17
void delay(uint32 n);
//void init_zhongduan();
void init_IO()
{
PINSEL0 = 0X0000;
IODIR = 0XffFF0;
IOCLR = 0XffFF0;
}
void __irq Timer0ISR (void)
{
find++;
if(find == 10)
{
find = 0;
}
init_IO();
T0IR = 0x01; /* 清除中断标志 */
VICVectAddr = 0x00; /* 中断向量结束 */
}
/*********************************************************************************************************
** Function name: Timer0Init
** Descriptions: 定时器0初始化
** input parameters: 无
** ouput parameters: 无
** Returned value: 无
*********************************************************************************************************/
void Timer0Init(void)
{
T0TCR = 0x02; /* 定时器0复位 */
T0PR = 0; /* 不设时钟分频 */
T0MCR = 0x03; /* 匹配后复位TC,并产生中断 */
T0MR0 = Fpclk; /* 设置0.5秒匹配值 */
T0IR = 0x01; /* 清除中断标志 */
T0TCR = 0x01; /* 启动定时器0 */
}
void init_zhongduan()
{
IRQEnable();
VICIntSelect = VICIntSelect & (~(1 << 4)); /* 定时器0分配为IRQ中断 */
VICVectCntl0 = 0x20 | 4; /* 定时器0分配为向量IRQ通道0 */
VICVectAddr0 = (uint32) Timer0ISR; /* 分配中断服务程序地址 */
VICIntEnable = 1 << 4; /* 定时器0中断使能 */
}
int main (void)
{// add user source code
init_IO();
Timer0Init();
init_zhongduan();
while(1)
{
//init_IO();
IOSET = commentyin[find];
//IO0SET = commentyin[find];
//delay(300);
}
return 0;
}
void delay(uint32 n)
{
uint32 i;
for(;n>0;n--)
{
for(i = 0;i<100;i++)
{
}
}
}
出定时中断之后,find的值变了,但是在硬件失误上显示不正常 |
阿莫论坛20周年了!感谢大家的支持与爱护!!
曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……
|