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

📄 serial.c

📁 自己的平时一些制作 现在整理一下 与大家一起分享
💻 C
字号:
#include <reg51.h>
#include <absacc.h>	
#include <intrins.h>
#define ADC0808_ADDR XBYTE[0x7fff]
#define uchar unsigned char
void adc_run(void);
sbit P2_3 =P2^3;
sbit P2_7 =P2^7;
sbit P3_2 =P3^2;
uchar ad_val;
bit ad_over=0;
void serial_init(void)
{			
	SCON=0xf0;
	TMOD=0x20;
	TH1=0xfd;
	TL1=0xfd;
	TR1=1;
	ES=1;				  
}			
void interrupt_init(void)
{
	EA=1;
	EX0=1;
	
}
void interrupt4(void) interrupt 4 using 2
{
	EA=0;
	if(TI)
	 TI=0;
	
	if(RI)
	{
		RI=0;
		if(SBUF==0x7f)		//如果接收到主机的地址吗0x7f
		{
			SBUF=0x11;		//发送响应码0x11
			//while(!TI);		//必须
			//TI=0;
			SCON=0xd0;		//并且把SCON中的SM2置0,允许响应数据中断
			
		}
		if(SBUF==0xaa)		//如果接收到主机的启动A/D转化的命令0xaa
		{	
			SBUF=0x22;		//发送响应码0x22
			//while(!TI);		//必须
			//TI=0;
			adc_run();		//启动A/D转化
			//while(P3_2)
			{
			}
			//	ad_val=P0;//ADC0808_ADDR;
			//	ad_over=1;
			
		}
		if(SBUF==0xbb)		 //如果接受到主机的发送转化结果的命令0xbb
		{	 
			SBUF=0x33;		 //发送响应码
			//while(!TI);	//必须
			//TI=0;
		}
		if(SBUF==0xcc)
		{	
			while(!ad_over)
			{
			} P2_3=~P2_3;
				ad_over=0;
				SBUF=ad_val;
				//while(!TI);	//必须
				//TI=0;
				SCON=0xf0;//****************等待下一次寻址
			//}
		}
	}
	EA=1;
}
void interrup0(void) interrupt 0 using 3
{	
	P2_7=1;
	RD=0;
	_nop_();
	_nop_();
	P2_7=0;
	_nop_();
	_nop_();
	
	ad_val=P0;
	ad_over=1; 
	RD=1;
	P2_7=1;
}			   

void main(void)
{
	P2_3=0;	
	interrupt_init();
	serial_init();
	
	while(1);
}
void adc_run(void)
{

	P2_7=1;
	 WR=0;
	_nop_();
	_nop_();
	P2_7=0;
	_nop_();
	_nop_();
	WR=1;
	P2_7=1;

}

⌨️ 快捷键说明

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