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

📄 led.c

📁 dsp tmslf2407a 汇编,c的原代码,包括i2c,scitimer,fir等的很多程序.
💻 C
字号:
#include "typedef.h"       
#include "f2407regs_c.h"
#include "global.h"        

extern uint cfgdata[128];    
extern uchar counterTime;  
extern uchar ledVlu;          
extern uchar b_com_success;
extern uchar b_com_counter;

extern uchar bFlashError;
extern uchar flashErrorCounter;   
extern uchar bReadTag;
extern uchar readTagCounter;

extern uchar bReadyReadTag;   
extern uchar readyReadCounter;

extern uchar bPowerUp;   
extern uchar PowerUpCounter;

extern uchar bAlarm ;   
extern uchar alarmCounter;
    
void ledOptInit();
void LedOptOut(void);    
void LedOutput12();
void LedOutput1(void);
void LedOutput2(uchar data);
void LedOutput3(uchar data);
void LedOutput4(uchar data);	
void LedOutput5(uchar data);
void LedOutput5flash(void);


uchar	OpticInput3();

void OptOutput1(uchar data); 
void OptOutput2(uchar data); 
void OptOutput3(uchar data);  

void ledOptInit()      // 273 clk,clr as io output
{
	MCRB &= 0xfeff;
	PDDATDIR |= 0x0101;	//iopd0 as io,273_clk 
		
	MCRB &= 0xFFBF;
	PBDATDIR |= 0x4040;	//iopc6 as io,273_clr
} 
/*
五路发光二极管输出控制	
	'1': 亮
	'0': 灭
*/ 
void LedOutput1()	//d0
{   
	ledVlu = ledVlu ^ 0x01;		/* led1 = !led1 */
    LedOptOut();    
}    
void LedOutput12()
{  	
	ledVlu = ledVlu ^ 0x03;		/* led2 = !led2,led1 = !led1 */
    LedOptOut();	
}
void LedOutput2(uchar data)	//d1
{
	if(data)
	{
		ledVlu = ledVlu | 0x02;		/* led2 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0xfd;		/* led2 = 0 */
    	LedOptOut();	
	}
}
void LedOutput3(uchar data)	//d2
{
	if(data)
	{
		ledVlu = ledVlu | 0x04;		/* led3 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0xfb;		/* led3 = 0 */
    	LedOptOut();	
	}	   
}
void LedOutput4(uchar data)	//d3
{
	if(data)
	{
		ledVlu = ledVlu | 0x08;		/* led4 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0xf7;		/* led4 = 0 */
    	LedOptOut();	
	}
}
void LedOutput5(uchar data)	//d5
{
	if(data)
	{
		ledVlu = ledVlu | 0x10;		/* led5 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0xef;		/* led5 = 0 */
    	LedOptOut();	
	} 
}
void LedOutput5flash()
{
	ledVlu = ledVlu ^ 0x10;		/* led5 = !led5 */
    LedOptOut();   
}
////////////////////////////////////////////////////////////
/*
	三路光耦输入口,返回值低三位表示三路状态,高五位不用,
	低三位:‘0’,低, 	‘1’,高	
*/
uchar	OpticInput3()
{
	uchar state = 0;
	
	MCRA &= 0xcfff;
	PBDATDIR &= 0xcfcf;	// iopb4,iopb5 as io;optin_1,optin_2	
	
	MCRB &= 0xfff7;
	PCDATDIR &= 0xf7f7;	//iopc3 as io;optin_3
	
	if(PBDATDIR&0x10)state |= 0x01;	// the first  '1'
	if(PBDATDIR&0x20)state |= 0x02;	// the second '1'
	if(PCDATDIR&0x80)state |= 0x04;	// the third  '1'
	return (state);		
}
/*
	光耦输出口opt1,通过数据口d7锁存	
*/
void OptOutput1(uchar data)
{	
	if(data)
	{
		ledVlu = ledVlu | 0x80;		/* opt1 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0x7f;		/* opt1 = 0 */
    	LedOptOut();	
	}    	
}
/*
	光耦输出口opt2,通过数据口d6锁存	
*/
void OptOutput2(uchar data)
{
	if(data)
	{
		ledVlu = ledVlu | 0x40;		/* opt2 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0xbf;		/* opt2 = 0 */
    	LedOptOut();	
	}    	
} 
/*
	光耦输出口opt3,通过数据口d5锁存	
*/
void OptOutput3(uchar data)
{
	if(data)
	{
		ledVlu = ledVlu | 0x20;		/* opt3 = 1 */
    	LedOptOut();	
	}
	else
	{
		ledVlu = ledVlu & 0xdf;		/* opt3 = 0 */
    	LedOptOut();	
	} 	 		
}    
/*
	led1 is for running,frequency is 1Hz
*/      
void ledDrive(void)
{ 
	feedWatchDog();
	if(counterTime>=10)      //程序运行灯,f=1Hz
	{ 									
		counterTime = 0;
		LedOutput1();					
	} 
	if(bFlashError)	// flash 错误指示灯,500ms
   	{   		  		
   		if(flashErrorCounter>=5)       	//500ms
   		{   			    
   			flashErrorCounter = 0;  
   			LedOutput12();		// led2 = 0 ,led1 = 0   			
   		} 	
   	}  
   	if(bReadyReadTag == 1)
   	{
   		LedOutput2(1);			// led2 = 1 
   		if(readyReadCounter>=2)       	//亮200ms
   		{                     
   			bReadyReadTag = 0;    
   			readyReadCounter = 0;  
   			LedOutput2(0);		// led2 = 0			
   		} 	
   	}
	if(b_com_success)     //串口通讯灯计数器 
   	{    
   		LedOutput3(1);			// led3 = 1    		
   		if(b_com_counter>=2)       	//亮200ms
   		{                     
   			b_com_success = 0;    
   			b_com_counter = 0;  
   			LedOutput3(0);		// led3 = 0
   		} 	
   	}     	
   	if(bReadTag == 0x01)			//read tag
   	{
   		LedOutput4(1);
   		if(readTagCounter>=2)	//200ms
		{
   			bReadTag = 0;
	   		readTagCounter = 0; 
	   		LedOutput4(0);
	   	} 
   	}   
   	if(bPowerUp == 0x01)			//read tag
   	{
   		LedOutput5(1);
   		if(PowerUpCounter>=10)	//1s
		{
   			bPowerUp = 0;
	   		PowerUpCounter = 0; 
	   		LedOutput5(0);
	   	} 
   	} 
   	if(bAlarm == 0x01)	//各种告警指示灯   	
   	{   		
   		if(alarmCounter>=2)	//200ms
		{
	   		alarmCounter = 0; 
	   		LedOutput5flash();
	   	} 
   	}  	
}

⌨️ 快捷键说明

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