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

📄 main.c

📁 spce061单片机的一些程序!C语言和汇编语言都有
💻 C
字号:
//===========================================================================
//	The information contained herein is the exclusive property of
//	Sunnnorth Technology Co. And shall not be distributed, reproduced,
//	or disclosed in whole in part without prior written permission.
//	(C) COPYRIGHT 2003 SUNNORTH TECHNOLOGY CO.
//	ALL RIGHTS RESERVED
//	The entire notice above must be reproduced on all authorized copies.
//===========================================================================
//============================================================================
//  工程名称:	ex4_LED_Dots				 
//  功能描述:   实验指导书》综合实验
//              LED点阵模块
//              LED显示动态的时钟和移动的小人
//  涉及的库:	CMacro1016.lib
//  组成文件:	main.c
//     			system.asm/Resource.asm
//				LED_Dots.h/SPCE061A.h
//				SPCE061A.inc/Resource.inc
//  硬件连接:	B口的低8位接LED的com
//        		A口的低8位接GREEN,高8位接RED
//  维护纪录:   2002-5-15(建立)
//				2003-6-16(添加版本说明及版权声明)
//				2003-7-16(代码标准化)
//              2005-10-14(代码标准化,加一些注释)
//==============================================================================

//========================================================
//	文件名称:	main.c
//	功能描述:	8*8LED点阵显示动态时钟图形
//	维护记录:	2005-10-14	v1.0
//========================================================
#include "SPCE061A.h"
#define  GREEN  0x00ff
#define  RED    0xff00
unsigned char Pattern[15][8]=                       //时钟图形数据
{
	{ 0x1C,0x22, 0x51,0x4F, 0x41,0x22, 0x1C,0x00 },
	{ 0x1C,0x2a, 0x49,0x4F, 0x41,0x22, 0x1C,0x00 },
	{ 0x1C,0x22, 0x45,0x4F, 0x41,0x22, 0x1C,0x00 },
	{ 0x1C,0x22, 0x41,0x4F, 0x41,0x22, 0x1C,0x00 },
	{ 0x1C,0x22, 0x41,0x4F, 0x45,0x22, 0x1C,0x00 },
	{ 0x1C,0x22, 0x41,0x4F, 0x49,0x2a, 0x1c,0x00 },
	{ 0x1C,0x22, 0x41,0x4F, 0x51,0x22, 0x1c,0x00 },
	{ 0x1C,0x22, 0x41,0x7F,	0x41,0x22, 0x1C,0x00 },	
	{ 0x20,0x3C, 0x23,0x61, 0x23,0x3C, 0x20,0x00 },
	{ 0x08,0x1C, 0x3E,0x08, 0x08,0x3E, 0x1C,0x08 },
	{ 0x78,0x48, 0x4F,0x49, 0x4F,0x48, 0x78,0x00 },
	{ 0x78,0x78, 0x4F,0x49, 0x4B,0x78, 0x78,0x00 },
	{ 0x7F,0x47, 0x57,0x50, 0x57,0x47, 0x7F,0x00 },
	{ 0x7E,0x78, 0x78,0x78, 0x78,0x78, 0x7E,0x00 },
	{ 0x3E,0x22, 0x3E,0x00, 0x2E,0x2A, 0x3E,0x00 },
};
//===========================================================================================
//语法格式:void ClearWatchdog(void)
//实现功能:清看门狗
//参数:	无
//返回值:	无
//===========================================================================================
void ClearWatchdog()
{
    * P_Watchdog_Clear = 0x0001;                             //清看门狗
    
}

//============================================================================================
//语法格式:void InitialPort(void)
//实现功能:端口初始化
//参数:	无
//返回值:	无
//============================================================================================
void InitialPort()
{                                                     //Dir, data,attrib
	SP_Init_IOB(0xffff,0xffff,0xffff); 	              //初始化B口为同相的高电平输出
    SP_Init_IOA(0xffff,0xffff,0); 		              //B Positive,A Negtive.
									                  //初始化 A口为反相的低电平输出
					  
}     

//============================================================================================
//语法格式:void delay(char n)
//实现功能:延时子程序
//参数:	char n-延时控制
//返回值:	无
//============================================================================================
void delay(char n)
{
	int i,j ;	 
	for(i=0;i<n;i++)
    {
		ClearWatchdog();                          //清看门狗
		for(j = 0;j<50;j++);
	}
}

//============================================================================================
//语法格式:void TestLed(void)
//实现功能:测试LED,依次点亮红灯,绿灯,红绿灯
//参数:	无
//返回值:	无
//============================================================================================
void TestLed(void)
{ 
	ClearWatchdog();                	                //清看门狗
	SP_Export(P_IOA_Data,0x00ff);		               	// 点亮红灯
	SP_Export(P_IOB_Data,0x00ff);
	delay(1000);
	SP_Export(P_IOA_Data,0xff00);	    				// 点亮绿灯	
	SP_Export(P_IOB_Data,0x00ff);	
	delay(300);
	//SP_Export(Port_IOA_Data,0xffff);	                // 红绿灯都点亮	
	SP_Export(P_IOA_Data,0x0000);
	SP_Export(P_IOB_Data,0x00ff);	 
	delay(2000);
}

//============================================================================================
//语法格式:void Clock(void)
//实现功能:显示一个跳动的时钟
//参数:	无
//返回值:	无
//============================================================================================
void Clock(void)
{
	int i,j,k,SelCol,Reload = 1;
	                                    
	for(i=0;i<8;i++)
	{
	    ClearWatchdog();                                          //清看门狗
		for(k=0;k<80;k++)
		{
			SelCol=Reload;
			for(j = 0;j<8;j++)
			{	
				SP_Export(P_IOA_Data,SelCol);
				SP_Export(P_IOB_Data,Pattern[i][j]);           //显示
				delay(1);
				SelCol = SelCol<<1;                               //列左移
			} 
		}
	}
}

//============================================================================================
//语法格式:void WalkMan(void)
//实现功能:显示移动的小人
//参数:	无
//返回值:	无
//============================================================================================
void WalkMan(void)
{
	char state = 0;
	unsigned int i,j,k,l=0,SelCol = 2,Reload = 1;	
	unsigned char ManIcon[8] = { 0x20,0x94,0xCA,0x7A,0xCA,0x94,0x20,0x00 };	
	for(j=0;j<20;j++)
	{
	    ClearWatchdog();                                //清看门狗
		switch(state)
		{
			case 0:		                                //状态0,图形向左移动
				Reload = Reload << 1;
				if(Reload == 0)
				{
					Reload = 0x8000;
					state = 1;
				}
				break;
			case 1:		                                 //状态1,图形向右移动
				Reload = Reload >> 1;
				if(Reload == 0)
				{				
					Reload = 0x0001;
					state = 2;
				}
				break;
			case 2:		                                  //状态2,图形向左溢出屏幕
				l++; 
				Reload = 1;
				if(l==8)
				{									
					state = 0;
					l = 0;
				}				
				break;
		}	
		for(k=0;k<8;k++)
		{
			SelCol = Reload;
			ClearWatchdog();                               //清看门狗
			for(i = l;i<8;i++)
			{	
				SP_Export(P_IOA_Data,SelCol);
				SP_Export(P_IOB_Data,ManIcon[i]);      //显示图形
				delay(1);
				SelCol = SelCol<<1;                       //列左移一位
			}
		}
	}
}

//=============================================================================================== 
// 语法格式:	int  main(void)
// 实现功能:	主函数
// 参数:		无
// 返回值:		无
//============================================================================================
int  main(void)
{
	int i;
	InitialPort();                                         //初始化I/O口
    TestLed();	                                           //测试LED程序
	while(1)
	{		
       WalkMan();                                          //移动的图标
	   Clock();                                            //动态 时钟
	}
}

⌨️ 快捷键说明

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