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

📄 ms_c.h

📁 大家好
💻 H
字号:
//C8051f020与89c52联机软件包
//串行通讯  波特率 9600
//占用资源			UART0	T1 (产生波特率)	
//占用引脚          P0.0  P0.1
//可供调用函数名 	void SYSCLK_Init(void)  配置系统时钟使用外部晶振22.1184MHz
//					void send_led(void)		发送一个起始位0xf4+8位数据位 (0~9) 
//					void PORT_Init (void) 	端口配置
//					void UART0_Init(void)	UART0初始化			
//					void delay(uint t)		延时函数
//
//全局变量名		bit KEY_FLAG  有键按下并发送完键值(0XF3+键值+键值)标志位
//					uchar KEY_DATA	  当KEY_FLAG==1时 读KEY_DATA得键值	只读 
//					uchar LED_BUF[9]={0xf4,0}; LED显示缓冲		可修改
//
//
//作者:易北
//时间:2007年8月2号

#include "c8051f020.h"

#define uchar unsigned char
#define uint  unsigned int

sbit OUT=P1^6;
sbit KEY=P3^7;

bit RCV_KEY_FLAG=0;					//接收开始标志
bit KEY_FLAG=0;						//有键值接收到标志位

uchar KEY_DATA=0;					//串口接收的键值
uchar LED_BUF[10]={0xf4,0};			//发送至LED的数值
									//LED_BUF[9]为闪烁标号 0表示所有数码管都不闪烁 1~8 表示 1~8 号数码管闪烁 9表示所有的都闪烁

void delay(uchar t)
{
	uchar k;
	while(t--)
	for(k=0;k<255;k++);
							}


//配置系统时钟使用外部晶振22.1184MHz
void SYSCLK_Init(void)
{
	uchar i;
	WDTCN=0xde;						//禁用看门狗
	WDTCN=0xad;
	OSCXCN=0x67;  
	for ( i=0; i<255; i++ ) ;  	
	while(!(OSCXCN & 0x80 ) );		//等待晶体振荡器稳定
	OSCICN=0x88;   					//选择外部时钟源 允许时钟丢失检测 检测到时钟丢失将复位
	CKCON=0x00;  					//T0 12分频
								}


//端口配置
void PORT_Init (void)
{	
	XBR0=0x04;						//允许UART0
	XBR1=0x00;						
	XBR2=0xc0; 						//允许交叉开关 禁止弱上拉 
 		
	P0MDOUT=0xff;					//1 为推挽 0为漏极开路
	P1MDIN=0xff;					//0 配置为模拟输入 1 配置为数字输入
	P1MDOUT=0xff;					//1 为推挽 0为漏极开路
	P2MDOUT=0xff;					//1 为推挽 0为漏极开路		
	P3MDOUT=0x00;					//1 为推挽 0为漏极开路	
	P3IF=0;							//端口3中断标志
	P74OUT=0xff;
													}

//UART0初始化
void UART0_Init(void)
{
	PCON=0x80;						//写SM00 SM10  波特率翻倍
	SCON0=0x70;						//方式1 
	IE=0x90;						//允许 UART0中断 
	TMOD=0x20;
	TH1=0xf4;						//产生波特率
	TL1=0xf4;
	TR1=1;
					}


void send_led(void)								//发送一个起始位0xf4+8位数据位 (0~9) 
{
	uchar i;
	for(i=0;i<10;i++)
	{
		SBUF0=LED_BUF[i];
		delay(10);
						}
								}

	
void UART0 (void) interrupt 4
{	
	if(RI0==1)									//确定为接收引发中断
	{
		RI0=0;
		if(RCV_KEY_FLAG)
		{
			KEY_DATA=SBUF0;
			KEY_FLAG=1;								//接收标志
	   		OUT=~OUT;
						}
		else if(RCV_KEY_FLAG==0 && SBUF0==0xf3 )
		{
		 	RCV_KEY_FLAG=1;
								}

										}
	else if(TI0==1)								//确定为发送完引发中断
	{
		TI0=0;			}
								}

⌨️ 快捷键说明

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