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

📄 rf_test.c.bak

📁 一个简单单片机教程
💻 BAK
字号:
#include"reg51.h"
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define  nop  _nop_()       /* 定义空操作指令 */
sbit in		=P3^4;
sbit out	=P3^6;
sbit en 	=P1^7;						/*DTLED-6显示芯片使能端*/	
sbit dout	=P1^6;						/*DTLED-6显示芯片数据读入端*/
sbit clk	=P1^3;
uchar dat_1,dat_2;
bit inter_psw=0;						/*DTLED-6显示芯片/时钟芯片DS1302时钟输入端*/
uchar dispbuf[9]={0,0,0,0,0,0,0,1,0};			/*显示值存放阵列*/
void delay (uint value)					/*延时副程式*/
{
      while (value!=0) value--;				/*10US延时*/
}
/**********************************************/
void DL(void)
{
	uchar i;
  	for(i=0;i<7;i++)
    	{
     		delay(7000);
     	}
 }
/*********************************************/ 
void tsled(void)					/*串行发送DTLED-6显示副程式*/	
{   
	char ts0,i,j;
	clk=0;
	en=0;
	delay(10);
	for(j=0;j<9;j++)
  	{	ts0=dispbuf[j];
		for(i=0;i<4;i++)			/*发小数点码8,4,2,1*/
		{
 			clk=1;
			ts0=ts0<<1;	
			if(AC==1) 
				dout=1;
			else      dout=0;
			clk=0;
			nop;
			delay(3);
		}
   	} 	
	en=1;
}							/*返回主程式*/
/**********************************************************************************/    
void process(void)
{
	uchar i;
 	EA=0;
 	for(i=0;i<8;i++)
   	{
    		delay(102);
    		if(in)goto pro_end;
    	}
 	while(!in)nop;   
 	delay(544);
 	for(i=0;i<8;i++)
   	{
     		while(!in)nop;  
     		delay(102);
     		if(!in){dat_1=dat_1>>0x01;}
     		else {delay(114);dat_1=(dat_1>>0x01)|0x80;}
    	}
 	delay(544);
 	for(i=0;i<8;i++)
   	{
     		while(!in)nop;  
     		delay(102);
     		if(!in){dat_2=dat_2>>0x01;}
     		else {delay(114);dat_2=(dat_2>>0x01)|0x80;}
    	}
 	if(dat_1==0xc4&&dat_2<0x20)
   		{
   			EA=0;
   			dispbuf[1]=dat_2&0x0f;
   			dispbuf[2]=dat_2>>4;
   			dispbuf[3]=0x04;
   			dispbuf[4]=0x0c;
   			tsled();
   			EA=1;
   			DL();
   		}  
 	pro_end:;  
 	EA=1; 
 }             
/*************************************************************/   
void T0_count(void)interrupt 1 using 1
{
	inter_psw=1;
}

/*************************************************************/
void main(void)
{
	dat_1=0x00;
 	dat_2=0x00;
 	TMOD=0x06;                            //T1工作方式2

 	TH0=0xff;
 	TL0=0xff;
 
 	EA=1;
 	ET0=1;
 	TR0=1;
 	tsled();
 	while(1)
  	{
    		if(inter_psw){process();inter_psw=0;}
   	}  
}
/**************************************************************/ 

⌨️ 快捷键说明

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