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

📄 main.c

📁 要用到开发工具SD-H08
💻 C
字号:
/*-----------------------------------------------------*
*工 程 名:Prgframe.prj                                 *
*硬件连接:PTA.1接指示灯                                *
*程序描述:指示灯PTA.1闪烁                              *
*目    的:第一个freescale(Motorola) HC08系列MCU程序框架*
*说    明:提供Motorola MCU的编程框架,供教学入门使用   *
*注    意:如果延时不够长的话,会发觉灯不会闪烁,而是一 *
*         直亮,这是由于人的视觉的引起的。             *
*--------《嵌入式应用技术基础教程》教学实例-----------*/
/*[头文件]*/
#include "GP32C.h"                //映像寄存器地址头文件
/*[指示灯所接引脚定义]*/
#define  light_a     PTA         //灯(Light)接在PTA口
#define  light_ctrla DDRA        //相应的方向寄存器
#define  light_b     PTB
#define  light_ctrlb DDRB
#define  light_pin   i          //灯所在的引脚
/*[全局变量声明]*/
unsigned char i;
int k;
/*[延时子函数声明]*/
void Delay1000(void);
/*[主函数]*/
void main()
  {  
     light_ctrla|=0xff;
     light_ctrlb&=~(0x03);
     while(1)
  		{
  //8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。
     		if((light_b&0x3)==0x0)
     			{
     				light_a|=0xff;
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(1<<light_pin);
    	 				for(k=0;k<512;k++)             //延时0.25秒
    					 Delay1000();
     				}
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(0x80>>light_pin);
    	 				for(k=0;k<512;k++)
     					Delay1000();
     				}
     			}
 // 8个LED中只有两个连在一起的灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约4秒。   		
     		
     		else if((light_b&0x3)==0x01)
     			{
     				light_a|=0xff;
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(3<<light_pin);
    	 				for(k=0;k<512;k++)             //延时0.25秒
    					 Delay1000();
     				}
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(0x12>>light_pin);
    	 				for(k=0;k<512;k++)
     					Delay1000();
     				}
     			}
 // 8个LED中只有一个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约8秒    			
 			else if((light_b&0x3)==0x02)
     			{
     				light_a|=0xff;
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(1<<light_pin);
    	 				for(k=0;k<1024;k++)             //延时0.25秒
    					 Delay1000();
     				}
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(0xc0>>light_pin);
    	 				for(k=0;k<1024;k++)
     					Delay1000();
     				}
     			}
 //8个LED中只有两个灯亮,亮灯顺序是从左到右,再从右到左,一个周期时间长度约8秒
			else if((light_b&0x3)==0x03)
     			{
     				light_a|=0xff;
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(3<<light_pin);
    	 				for(k=0;k<1024;k++)             //延时0.25秒
    					 Delay1000();
     				}
     				for(i=0;i<=8;i++)
     				{
     					light_a&=~(0xc0>>light_pin);
    	 				for(k=0;k<1024;k++)
     					Delay1000();
     				}
     			}
  		}
  }
/*[内部子程序存放处]
/*Delay1000:延时1000个时钟周期-------------------------*    
*功  能:延时函数(约1000个时钟周期)                     *
*参  数:无                                             *
*返  回:无                                             *
*-----------------------------------------------------*/                            
void Delay1000(void)
  {  unsigned char u; 
    for(u=0;u<=110;u++);
  }

    



⌨️ 快捷键说明

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