中级会员
- 积分
- 477
- 威望
- 218
- 贡献
- 247
- 兑换币
- 20
- 注册时间
- 2010-8-16
- 在线时间
- 6 小时
|
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
#include<mc9s12dg128.h>
#define EnableInterrupt asm("cli") //开中断
#define disableInterrupt asm("sei") //关中断
int count,m;
const char Dtable[10] =
// 0 1 2 3 4 5 6 7 8 9
{0xC0,0xF9,0xA4,0xB0,0x99, 0x92,0x82,0xF8,0x80,0x90};
//片选表
void timerint()
{
TSCR1=0x80;
TSCR2=0x05; //分频p=32 则中断一次为1/23秒
}
void LEDInit(void)
{
DDRA = 0xFF; //数据口为输出
DDRP= 0x00; //位选口为输入
}
void mcuint()
{
DisableInterrupts;
CLKSEL_PLLSEL=0;
PLLCTL_PLLON=0;
SYNR=0X02;
REFDV=0X01;
PLLCTL_PLLON=1;
while((CRGFLG&0X08)==0X00);
CLKSEL_PLLSEL=1; //fbus=48mhz
EnableInterrupts;
}
__interrupt void isr(void)
{
DisableInterrupts;
count++;
if(count==23)
{
LEDshow(m++);
delay(500);
count=0;
if(m==9)
{
m=0;
delay(20);
LEDshow(m);
delay(100);
}
}
TFLG2=0x80;
EnableInterrupts;
}
void delay(int i)
{
int j;
for(j=0;j<500;j++)
while(i--);
}
void LEDshow(int b)
{
PORTA=Dtable;
}
void main(void) {
DisableInterrupts;
mcuinit();
LEDInit();
timerint() ;
TSCR2 |= 0x80;
count=0;
m=0;
EnableInterrupts;
for(;;);
}
求大神指点…… |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|