⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 freescale mc9s08qg8 串行通讯
💻 C
字号:
 /*               KB模块例程

             HCS908_QG8 单片机开发板 

实验介绍:
    本程序是KB模块的例程,所用资源为单片机内部KBI模块,所接器件为按键和LED,
其中D2与PTA0,D3与PTA1,S2与PTA2,D3与PTA3相连接,
    确定你开发板上拨码开关JP4(图片上9)的1、2、3、4位处于on),而其他位处于
远离on!

实验现象:
    按一下按键(如S2)对应的LED指示灯(D3)发光(熄灭),再一次按下按键对应的
LED指示灯熄灭(发光),其中S2控制着D3,其中S3控制着D2。


author:QGL

any question mail me:)
libing.qu@free-tech.com.cn 
*/

/*****************头文件****************************************/
#include <hidef.h> /* for EnableInterrupts macro */
#include "derivative.h" /* include peripheral declarations */

/*********************变量和函数定义****************************/
void IO_INIT(void);
void KB_INIT(void);
void MCU_INIT(void);
void DELAY(word x);

/*********************主函数************************************/
void main(void) {

    EnableInterrupts; /* enable interrupts */
  
    MCU_INIT();
    IO_INIT();
  	KB_INIT(); 
 
    for(;;) {
       // __RESET_WATCHDOG(); /* feeds the dog */
        
    } /* loop forever */
  /* please make sure that you never leave main */
}

/***************************MCU初始化函数*******************************/
void MCU_INIT(void){

    ICSC1=0x04;
    ICSC2=0x40;
    ICSTRM=0xa8;
    SOPT1=0x42;
    SOPT2=0x00;

}



/***********************I/O初始化********************************/
void IO_INIT(void){

    PTADD_PTADD2=0;//PTA2、PTA3设置为
    PTADD_PTADD3=0;
    PTADD_PTADD0 = 1;//PTA0、PTA1设置为
    PTADD_PTADD1 = 1;
     
    //PTAD_PTAD0 =0; 
    //PTAD_PTAD1 =0;  
}

/************************KB初始化********************************/
void KB_INIT(void){

    KBIPE_KBIPE2 =1; /* Enable Keyboard Pin */ 
    KBIPE_KBIPE3 =1;                                 
    KBISC_KBIE = 1;  /* Enable Keyboard Interrupts */
    //KBISC_KBMOD = 1;
   
    PTAPE_PTAPE2 = 1; /* Enable Pullup for Keyboard pin */
    PTAPE_PTAPE3 = 1;   
    KBISC_KBACK = 1; /* Clear Pending Keyboard Interrupts */
}

/***************************延时函数*******************************/
void DELAY(word x){

    word i,j;
    
    for(i=0;i<x;i++) {  
        for(j=0;j<250;j++) 
        {;}
    }
}

/********************************键盘中断**************************/
interrupt 18 void   KBI_ISR(void) {
   
    KBISC_KBACK = 1; //清除键盘中断标志
   
    DELAY(1);
    if(PTAD_PTAD2==0)
        {    //查询是由哪一个口引起的中断 

        PTAD_PTAD1 = ~PTAD_PTAD1;   
        }
    else if(PTAD_PTAD3==0){ 
    

        PTAD_PTAD0 = ~PTAD_PTAD0;
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -