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

📄 text1.c

📁 单片机快速入门原程序
💻 C
字号:
#include <reg51.h>
#include<stdio.h>
#define RX_PAN_UP 0x40 //串口命令字 上
#define RX_PAN_DOWN 0x41 //串口命令字 下
#define RX_PAN_LEFT 0x42 //串口命令字 左
#define RX_PAN_RIGHT 0x43 //串口命令字 右
#define uchar unsigned char
#define uint unsigned int
xdata uchar RxByte[4];	//定义数据缓冲区
xdata uchar ReadIndex;	//缓冲区读指针
xdata uchar WriteIndex;	//缓冲区写指针
Uart_Init();
sbit P10=0x90;				//P1.0位
sbit P11=0x91;				//P1.1位
sbit P12=0x92;				//P1.2位
sbit P13=0x93;				//P1.3位
void Translate_RxByte(uchar RxByte);
	//将命令字转化为控制信号
bit Change_Flag;
void Update_LED();
main()
{	uchar CurrentByte;
	Uart_Init();
	P0=0XFF;		//初始化输出为1
	P1=0X00;		 //初始化输出为0
	P2=0XFF;
	P3=0XFF;
	ReadIndex=0;	//读指针置0
	WriteIndex=0;	//写指针置0
	ES=1;		/* 串行口中断允许 */
	EA=1;		/* 全局中断允许 */
for(;;)
	{
		if(WriteIndex!=ReadIndex)
		CurrentByte=RxByte[ReadIndex];
	
		if(ReadIndex==2)
		{
		Translate_RxByte(CurrentByte);
			//将命令字转化为控制信号
		}
		ReadIndex++;
		if(ReadIndex>3) ReadIndex=0;

	}
}
void Translate_RxByte(uchar RxByte )

{ switch(RxByte)
	{	case RX_PAN_UP: P12=1;	//云台上转
			break;
		case RX_PAN_DOWN: P13=1;//云台下转
			break;

		case RX_PAN_LEFT: P10=1;//云台左转
			break;

		case RX_PAN_RIGHT: P11=1;//云台右转
			break;
	default : P1=0x00;		//云台停止转动
			break;
	}
}
Uart_Init()
	{SCON = 0x52;    /* 设置串行口控制寄存器SCON*/
	 TMOD = 0x21;    /* 12M时钟时波特率为2400  */
	 TCON = 0x69;    /* TCON */
	 TH1 =  0xf3;    /* TH1 */
	}
void Serial_int() interrupt 4 using 0
{				//串行口中断
	if(RI==1)
		{	RxByte[WriteIndex]=SBUF;
			if(WriteIndex>3) WriteIndex=0;
			WriteIndex++;
	 		
		}

	TI=0;	//清串行口中断标准位
	RI=0;
}



⌨️ 快捷键说明

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