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

📄 demo5.c

📁 FS4510开发板示例程序 demo5_pre----中断服务程序 串口驱动 演示的功能包括中断 定时器 串口 它提供了可以在 FS4510板子上运行的参考代码 文件说明 demo
💻 C
字号:
#include "include\timer.h"
#include "include\sysconf.h"
#include "include\isr.h"
#include "include\lcd.h"
#include "include\uart.h"
#include "include\pollio.h"

#define led4 0x1
#define led5 0x2
#define led6 0x4
#define led7 0x8

#define off 0
#define on 1
#define stay 2
#define toggle 3

#define alloff 0xff
#define allon 0x0

void WaitTime_ms(int TIMER_DEV, int t);
void WaitTime_ms_ok(int TIMER_DEV, int t);
void ledshow(char led4pm, char led3pm, char led2pm, char led1pm);
void loopdelay(int pm);
void wutm0isr(void);
void wutm1isr(void);
void PrintBanner(void);
void C_Entry(void)
{
	int i;
	char *mys;
	
	mys="I say to you today, my friends, that in spite of the difficulties and frustrations of the moment, I still have a dream.";
	
	//InitInterrupt();
	 ClrIntStatus();
	 
	IOPMOD=0x3fff;
	IOPDATA=allon;
		
	LCDInit();
	LCDTest();
	
	WaitTime_ms_ok(TIMER_DEV0, 3000);
	IOPDATA=alloff;
		
	tm_init(TIMER_DEV0, 200); 
	tm_init(TIMER_DEV1, 700); 
	Timer0Start();
	Timer1Start();
 
	Enable_Int(nGLOBAL_INT);
	
	//UART_Initialize(); 
	
	PrintBanner();
	i=0;
	while(1)
	{
		loopdelay(30);
		i++;
		ledshow(toggle, stay,stay, stay);
		Print("loopdelay --> %d\n",i) ;
		lPrint(mys);
		*mys++;		//itoa(i,mys,10);		
	} 
}

void ledshow(char led7pm, char led6pm, char led5pm, char led4pm)
{
	if(led4pm==0)			IOPDATA |=led4;			//clear the bit 1->  off led1
	else if(led4pm==1)		IOPDATA &=~led4;			//clear the bit 0->  on led1
	else if(led4pm==3)		IOPDATA ^=led4;			//toggle  the bit

	if(led5pm==0)			IOPDATA |=led5;			//clear the bit 1->  off led2
	else if(led5pm==1)		IOPDATA &=~led5;			//clear the bit 0->  on led2
	else if(led5pm==3)		IOPDATA ^=led5;			//toggle  the bit

	if(led6pm==0)			IOPDATA |=led6;			//clear the bit 1->  off led3
	else if(led6pm==1)		IOPDATA &=~led6;			//clear the bit 0->  on led3
	else if(led6pm==3)		IOPDATA ^=led6;			//toggle  the bit

	if(led7pm==0)			IOPDATA |=led7;			//clear the bit 1->  off led4
	else if(led7pm==1)		IOPDATA &=~led7;			//clear the bit 0->  on led4
	else if(led7pm==3)		IOPDATA ^=led7;			//toggle  the bit
}

void loopdelay(int pm)
{
	int i,j;	
	for(i=0;i<=pm;i++)
	{
		for(j=0;j<65535;j++)
		{
		}
	}

}

void WaitTime_ms(int TIMER_DEV, int t)
{
    int rDATA;

    	rDATA= t_data_ms(t); 
   
    if(TIMER_DEV) {
           TDATA1 = rDATA;    /* Clear Timer data register */
           Timer1Start();
           while(TCNT1 !=2);
           Timer1Stop();

    }
    else {
           TDATA0 = rDATA;    /* Clear Timer data register */
           Timer0Start();
           while(TCNT0!=2);
           Timer0Stop();
    }
}


void WaitTime_ms_ok(int TIMER_DEV, int t)
{
    int rDATA, xDATA;;

    	rDATA= t_data_ms(t); 
	xDATA=0xffffffff-rDATA;
    
    if(TIMER_DEV) {
           TDATA1 = 0xffffffff;    /* Clear Timer data register */
           Timer1Start();
           while(TCNT1 >xDATA);
           Timer1Stop();

    }
    else {
           TDATA0 = 0xffffffff;    /* Clear Timer data register */
           Timer0Start();
           while(TCNT0 >xDATA);
           Timer0Stop();
    }
}


void tm_init(int TIMER_DEV, int t) 
{
   if(TIMER_DEV)  /* for TIMER 1 */
   {
         Disable_Int(nTIMER1_INT);    
		 SysSetInterrupt(nTIMER1_INT, wutm1isr);

         TDATA1 = t_data_ms(t);    /* unit is [ms] */
         TCNT1 = 0x0;
         Enable_Int(nTIMER1_INT);  /* Timer interrupt enable */
   }
   else  /* for TIMER0 */
   {
         Disable_Int(nTIMER0_INT);    
	 	 SysSetInterrupt(nTIMER0_INT, wutm0isr);

         TDATA0 = t_data_ms(t);  
         TCNT0 = 0x0;
         Enable_Int(nTIMER0_INT); 
   }
}

void wutm0isr(void)
{
		Clear_PendingBit(nTIMER0_INT) ;
		ledshow(stay, stay, stay, toggle);
}

void wutm1isr(void)
{
		Clear_PendingBit(nTIMER1_INT) ;
		ledshow(stay, stay, toggle, stay);
}



// Print Banner
void PrintBanner(void)
{
	Print("\n\n") ;
	Print("                 FS4510 DEMO5_PRE          2003-7-18     \n\n") ;
	Print("-----------------------------------------------------------\n") ;
	Print("  1. TIMER0,TIMER1 demo 					  \n") ;
	Print("  2. TIMER0,TIMER1 interrupt demo	 		  \n") ;
	Print("  3. LCD demo						  \n") ;
	Print("  4. UART demo						  \n") ;
	Print("-----------------------------------------------------------\n") ;
}

⌨️ 快捷键说明

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