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

📄 usertask.c

📁 在C8051f340下的一个完整的uart项目源码 请
💻 C
字号:
#include "c8051F340.h"
#include "includes.h"

OS_STK xdata mystack1[USER_STACK_SIZE],mystack2[USER_STACK_SIZE],mystack3[USER_STACK_SIZE];

void init_port(void);
void init_clk(void);
void mytask1(void) ;
void mytask2(void) ;
void mytask3(void) ;
void Init_Device(void);
extern void init_timer0(void);


void main(void)
{
    //Init_Device();
	init_clk();
	PCA0MD = 0x00;	/* disenable watchdog */
	init_port();
	init_uart0();
	puts_uart0("Hello C8051F340!\n");

	//while(1) putc_uart0(getc_uart0());

	init_timer0();

	OSInit();
	OSTaskCreate(mytask1,0,&mystack1[0],0);
	OSTaskCreate(mytask2,0,&mystack2[0],1);
	OSTaskCreate(mytask3,0,&mystack3[0],2);
	OSStart();
}

void init_port(void)
{
	P0MDIN = 0xFF;				/* non-analog input													*/
	P0MDOUT = 0x10;				/* TX0 push-pull output, RX0 open drain output 						*/
	P1MDIN = 0xFF;
	P1MDOUT = 0x02;
	P1 = 0x02;					/* enablel max3223 tranceiver										*/
	
	XBR0 = 0x01;				/* enable uart0									 					*/
	XBR1 = 0x40;				/* enable cross, enable draw-up resistor							*/
}

void init_clk(void)
{
	unsigned char i;
	
	OSCICN = 0x83;				/* enable internal high frequency oscillator, set sysclk 12MHz 		*/
	while(!(OSCICN & 0x40));    /* wait internal high frequency oscillator ready 					*/
	
	OSCLCN = 0x00;				/* shutdown internal low frequency oscillator 						*/
	OSCXCN = 0x00;				/* shutdown external oscillator										*/
	
	CLKMUL = 0x80;				/* enable multiplier use internal oscillator 						*/ 
	for(i = 255; i > 0;i --);	/* delay 5us minimum												*/
	CLKMUL |= 0xC0;				/* initial multiplier												*/
	while(!(CLKMUL & 0x20));	/* wait multiplier ready											*/
	
	CLKSEL = 0x00;				/* usb clock use multiplier output, sysclk use internal oscillator 	*/
}

void mytask1(void) 
{
	TR0 = 1;
	while(1)
	{
		puts_uart0("Task 11111111 is running!\n"); 
		OSTimeDly(OS_TICKS_PER_SEC);
	}
}
void mytask2(void) 
{
	while(1)
	{
		puts_uart0("Task 22222222 is running!\n");   
		OSTimeDly(100);
	}
}
void mytask3(void) 
{
	while(1)
	{
		puts_uart0("Task 33333333 is running!\n");   
		OSTimeDly(200);
	}
}


⌨️ 快捷键说明

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