在线时间0 小时
UID276434
注册时间2011-4-6
NXP金币0
该用户从未签到
新手上路

- 积分
- 45
- 最后登录
- 1970-1-1
|

楼主 |
发表于 2011-7-22 16:57:39
|
显示全部楼层
RE:MC9S08DZ60的中断优先级问题
/*------------------------------------------------------------------------------------------------------*/
/* 该程序由定时器脉冲宽度调节器TPM来完成 */
/* 利用TPM1CH0的边缘对齐或中央对齐PWM功能,产生一定占空比的脉冲信号 */
/* 微控制器采用的是MC9S08DZ60 */
/* 晶振频率4MHz */
/* 注意:1 LED灯只是为了显示中断的次数 */
/* 2 TPM通道对应的是PORTD */
/* 3 按键S1、S2控制占空比的大小,按动1次S1,占空比增大10% */
/* 按动一次S2,占空比减少10% */
/* 4 按键中断和PWM中断的优先级问题,飞思卡尔单片机的中断优先级是固定 */
/* 的,中断向量表越靠后的中断优先级越高 */
/* TPM1中断优先级高于按键中断,为了防止案件中断子程序被破坏,可在按键中断子程序开始时关闭中断 */
/* TPM1通道用作边缘/ 中央对齐PWM通道而占空比为0%或100%,不会产生匹配中断。 */
/*------------------------------------------------------------------------------------------------------*/
#include /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */
#define LED PTCD_PTCD0
#define UP PTBD_PTBD4
#define DOWN PTBD_PTBD5
/////////////////////////////////////////////////////////////////////////////////////////
//延时函数
/////////////////////////////////////////////////////////////////////////////////////////
void delay0(unsigned int i)
{
unsigned char h;
while(--i)
for(h=0;h=0x7a12)
TPM1C0V=0x7a12;} //31250*10%=0c35
if(PTBD_PTBD5==0){ //按键消抖
TPM1C0V=TPM1C0V-0x0c35;
if(TPM1C0V |
|