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

📄 main.c

📁 基于飞斯卡尔MC9S08QG8的基本程序开发代码
💻 C
字号:
/*           led模块例程

             HCS908_QG8 单片机开发板 

实验介绍:
    本程序是显示模块的例程,所接器件为四位八段led数码管,其中PTB0-PTB3
与数码管的位选相连接,PTB4,PTB5与74LS164连接确定你开发板上拨码开
关JP1(图片上的12)的两位和JP4(图片上的9)的5、6、7、8位处于on),
而其他位处于远离on!

实验现象:
    四位数码管显示4321


author:QGL

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

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

/*******************定义变量和函数********************************/
unsigned char TAB[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xff,0xf6};//0-9,-,全灭
void SEND_BYTE(unsigned char byte);
void DELAY_50MS(unsigned int t);
void DISPLAY(uint i);
void MCU_INIT(void);
 
 /*****************主函数*****************************************/
void main(void){
   
    MCU_INIT();
    PTBDD=0x3f;  //PTB5--PTB0设置为输出
    EnableInterrupts; /* enable interrupts */
   
   
  /* include your code here */
    for(;;){
   
         //__RESET_WATCHDOG(); 
         
        PTBD_PTBD0=0;
        PTBD_PTBD1=0;
        PTBD_PTBD2=1;//选中第一位
        PTBD_PTBD3=0;
        SEND_BYTE(4); //发送数字4的段码
        DELAY_50MS(1);
        
        PTBD_PTBD0=0;
        PTBD_PTBD1=0;
        PTBD_PTBD2=0;
        PTBD_PTBD3=1;//选中第二位
        SEND_BYTE(3); //发送数字3的段码
        DELAY_50MS(1);

        PTBD_PTBD0=1;//选中第三位
        PTBD_PTBD1=0;
        PTBD_PTBD2=0;
        PTBD_PTBD3=0;
        SEND_BYTE(2); //发送数字2的段码
        DELAY_50MS(1);
        
        PTBD_PTBD0=0;
        PTBD_PTBD1=1;//选中第四位
        PTBD_PTBD2=0;
        PTBD_PTBD3=0;
        SEND_BYTE(1); //发送数字1的段码
        DELAY_50MS(1);

	 } 
  
}


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

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

}


/*****************模拟串口发送段码函数*****************************************/
void SEND_BYTE(uchar byte){ 
   
    unsigned char num,c; 
    num=TAB[byte];//0xfc;
    
    for(c=0;c<8;c++){ 
   
        PTBD_PTBD4=1;
		    PTBD_PTBD4=0; //模拟串口时钟
		  
		    if(num&0x01)
      	    PTBD_PTBD5=1;
	      else
	          PTBD_PTBD5=0;
	    
		    PTBD_PTBD4=1;
      
        num>>=1;
         
         
    }

}

/*****************延时函数*****************************************/
void DELAY_50MS(unsigned int t){

    unsigned int j; 
    unsigned int i; 
    
    for(i=t;i>0;i--){
  
        for(j=255;j>0;j--) 
            {;}
    }
}

⌨️ 快捷键说明

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