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

📄 2272js.c

📁 单片机通信程序
💻 C
字号:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit js=P1^5;
extern inttilcs();
extern void displayOneChar(unsigned char, unsigned char, unsigned char);
/*---------------------------------变量列表------------------------------------*/
uchar m,n,x,y,bc[6];
uint wendu;
/*****************  整数型转字符型方便打印*************************************/
	void IntToStr( uint t, unsigned char *sc, unsigned char n) 
{
	unsigned char a[5]; char i, j;                                 	
	a[0]=(t/10000)%10;         //取得整数值到数组         	
	a[1]=(t/1000)%10;                                     	
	a[2]=(t/100)%10;                                      	
	a[3]=(t/10)%10;                                       	
	a[4]=(t/1)%10;                                        	
                                                      
	for(i=0; i<5; i++)         //转成ASCII码              	
		a[i]=a[i]+'0';                                    	
	for(i=0; a[i]=='0' && i<=3; i++);                     	
	for(j=5-n; j<i; j++)       //填充空格                 	
		{ *sc=' ';  sc++; }                             	
	for(; i<5; i++)                                       	
		{ *sc=a[i]; sc++; }  //加入有效的数字           	
	*sc='\0'; 
} 
/*---------------------------------初始化子程序--------------------------------*/
void init(void)
{
    EA=1;                      //打开CPU总中断请求
    TMOD=0x01;					//定时0工作方式1
    TH0=0;
    TL0=0;
    TF0=0;
    TR0=0; 
}

/*-------------------------------250us精确延时---------------------------------*/
void delay_500(void) 
{
    uchar i,j;
	for(i=0x0A;i>0;i--)
	for(j=0x07;j>0;j--);
}


/*-------------------------外部中断0子程序(解码程序)---------------------------*/
void jieshou(void)
{
	uchar i,buf[17]; 
	uint k;
kk:	while(js==1);		 //排除高电平的错读
	while(js==0);		 //等待低电平
	TL0=0;
    TR0=1;
    while(js==1);		 //等待高电平
    TR0=0;
	if(TL0>27||TL0<20) 						 
	goto kk;
	//	 displayOneChar(0,0,'1');
	for(i=0;i<16;i++)
    { 
		TL0=0;
		TF0=0;
		while(js==0);
		TR0=1;
    	while(js==1);		 //等待高电平
    	TR0=0;
		buf[i]=TL0;
    }
//	displayOneChar(1,0,'2');
		for(i=0;i<16;i++)
		{ 
            if(buf[i]<10&&buf[i]>4)
              k=0;
            else 
			if(buf[i]<16&&buf[i]>10)
              k=1;
            else 
             goto kk; 
        		wendu=wendu<<1;           
			wendu=wendu|k;

			 /*
			qq=buf[i]/10;
			pp=buf[i]%10;
			if(m>14) 
			{
				m=0;
				n=~n;
			}
			displayOneChar(m,n,'0'+qq);
			displayOneChar(m+1,n,'0'+pp);
			m=m+3;
			*/
		} 
	//	if(wendu==0x1000) displayOneChar(2,0,'3');
	//	displayOneChar(2,0,'4');
}
/******************显示当前温度********************************************/
void diswendu()
{
    IntToStr(wendu,&bc[0],5);
	displayOneChar(0,1,bc[0]);  
	displayOneChar(1,1,bc[1]); 
	displayOneChar(2,1,bc[2]); 
	displayOneChar(3,1,bc[3]); 
	displayOneChar(4,1,'.'); 
	displayOneChar(5,1,bc[4]); 
	displayOneChar(6,1,0xdf);
    displayOneChar(7,1,'c');
}
/*-----------------------------主程序入口--------------------------------------*/
main()
{  	
	uchar i,j;
//	uchar x_3,x_4,x_5;
    delay_500();
	inttilcs();
	init(); 
	while(1)
	{ 
	jieshou();
	diswendu(); 
//displayOneChar(0,0,'0'); 
 	 	for(i=0;i<160;i++)
		for(j=0;j<160;j++);
	}
}

⌨️ 快捷键说明

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