智能车制作
标题:
求高手写一个基于定时中断的单片机流水灯代码
[打印本页]
作者:
茅草屋
时间:
2010-7-13 19:27
标题:
求高手写一个基于定时中断的单片机流水灯代码
实现定时的流水灯。让开发板上的八个
LED
,每个灯亮一秒,直到最后一个,再从最后一个开始亮到第一个
作者:
茅草屋
时间:
2010-7-14 13:43
怎么一个回复的也没有?
作者:
GhostStalker
时间:
2010-7-14 16:46
用PIT?
作者:
shineamnys
时间:
2010-7-14 20:20
本帖最后由 shineamnys 于 2010-7-14 20:23 编辑
回复
1#
茅草屋
#include <hidef.h> /* common defines and macros */
#include <MC9S12XS128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
//==================================================
//定时中断函数
//定时中断 0实现 500MS定时
//==================================================
#define PITTIME 5000//设定为 50MS定时
unsigned int vTmpPIT=0;
void pllclk(void)//24MHz,外部时钟为 16MHz
{
CLKSEL=0X00;
PLLCTL=0xe1;
SYNR=2;//PLLCLK=2*OSCCLK*(SYNR +1)/(REFDV +1)
REFDV=1;
PLLCTL=0X60;
asm NOP;
asm NOP;
asm NOP;
while((CRGFLG&0X08)==0);//时钟校正同步
CLKSEL=0X80;
}
void initIOBoutput(void)//IO口初始化,B口为输出
{
DDRB=0XFF;
PORTB=0XFF;
}
void initPIT(void)//定时中断初始化函数 50MS定时中断设置
{
PITCFLMT_PITE=0;//定时中断通道0关
PITCE_PCE0=1;//定时器通道 0使能
PITMTLD0=240-1;//8位定时器初值设定。240分频,在 24MHzBusClock下,为 0.1MHz。即 10us.
PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.01MS
PITINTE_PINTE0=1;//定时器中断通道 0中断使能
PITCFLMT_PITE=1;//定时器通道0使能
}
void main(void)
{
pllclk();
initIOBoutput();
initPIT();
EnableInterrupts;
for(;;){}/*wait forever*/
/*please make sure thatyou neverleave this function */
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
vTmpPIT++;
if(vTmpPIT==20)
{
PORTB=0B11111110;
}
else if(vTmpPIT==40)
{
PORTB=0B11111101;
}
else if(vTmpPIT==60) {
PORTB=0B11111011;
}
else if(vTmpPIT==80) {
PORTB=0B11110111;
}
else if(vTmpPIT==100) {
PORTB=0B11101111;
}
else if(vTmpPIT==120) {
PORTB=0B11011111;
}
else if(vTmpPIT==140) {
PORTB=0B10111111;
}
else if(vTmpPIT==160) {
PORTB=0B01111111;
vTmpPIT=0;
}
PITTF_PTF0=1;//清中断标志位
}
复制代码
今天恰好在研究PIT模块,结合别人的资料自己稍微修改了一下~
作者:
茅草屋
时间:
2010-7-17 14:23
恩恩 非常谢谢
作者:
shineamnys
时间:
2010-7-17 16:18
回复
5#
茅草屋
帮个小忙而已~
作者:
lqpm999
时间:
2010-11-21 11:10
不错
作者:
zhangjiarui
时间:
2010-11-29 10:12
在PIT里写了SWITCH 语句,因为有BREAK 貌似不可以
作者:
hehai07
时间:
2010-12-23 21:24
看看
作者:
LYL0707
时间:
2011-1-13 15:00
果真高手,如此标准,令人叹服!顶!
作者:
suaibinhan
时间:
2011-2-1 22:46
顶了
作者:
lhw1128
时间:
2011-2-14 18:09
谢谢啦
作者:
CCGOGO
时间:
2011-4-1 20:34
哇塞 学习了
作者:
pio
时间:
2011-4-7 14:58
谢谢分享
作者:
dashier
时间:
2011-11-26 14:45
学习中
作者:
awesss
时间:
2011-12-4 18:56
在中断中用移位指令更好,避免程序冗余!
作者:
栗子kary
时间:
2012-5-16 19:53
顶
作者:
板正的
时间:
2014-4-16 20:47
shineamnys 发表于 2010-7-14 20:20
回复 1# 茅草屋
顶
欢迎光临 智能车制作 (http://www.znczz.com/)
Powered by Discuz! X3.2