中级会员
- 积分
- 371
- 威望
- 202
- 贡献
- 123
- 兑换币
- 129
- 注册时间
- 2012-12-17
- 在线时间
- 23 小时
|
3#
楼主 |
发表于 2013-5-9 15:11:00
|
只看该作者
clan 发表于 2013-5-8 15:10
看看程序
void main(void)
{
uint data=12345;
DDRA=0XFF;
DDRB = 0xFF; //设置PB(0-7)方向为输出
PORTB = 0xFF; //设置PB(0-7)输出高电平
sysclock_init();
PWM_Init();
lcd_initial();
write_command(0x2C);
dsp_single_colour(0x00,0x00);//改变数据,显示不同的背景
DDRP_DDRP1 = 0; //设置PP0口方向为输入
PERP_PERP1 = 1; //设置PP0口拉设备启用
PPSP_PPSP1 = 1; //打开PP0口上拉
PIEP_PIEP1 = 1; //设置PP0口中断使能
EnableInterrupts; //打开中断
for(;;)
{
arrey1[0]=arrey[speed/10000];
arrey1[1]=arrey[speed/1000%10];
arrey1[2]=arrey[speed/100%10];
arrey1[3]=arrey[speed/10%10];
arrey1[4]=arrey[speed%10];
Display_ASCII8X16(25,50,arrey1);
// PORTB_PB0 = 1; //打开LED
}
}
//中断函数
#pragma CODE_SEG __NEAR_SEG NON_BANKED//将中断函数置于非分页区内,地址空间超过了16位的寻址空间64K,但是它的中断向量地址只有16位,所以中断程序要执行,就得在它16位的寻址空间也即非分页区内,这就是为什么会将S12的中断函数置于非分页区的原因。
interrupt 56 void IRQ_ISR(void) //56为PP口中断向量号,它是由文件"mc9s12g128.h"中定义的宏,可在这个文件中搜索"VectorNumber"查找各个中断的中断向量号
{
uint time;
DisableInterrupts; //关闭中断
PIFP_PIFP1 = 1; //清除PP0的中断标志位
// PORTB_PB0 = 0; //关闭LED
// delayms(1000); //延时以至于可以观察到效果
time++;
speed=time;
EnableInterrupts; //打开中断
}
#pragma CODE_SEG DEFAULT //将后续代码置于默认区域内
|
|