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

📄 zz.c.100831152044

📁 avr基础程序大全
💻 100831152044
字号:
#include <iom16v.h>
#include <macros.h>
#include "12864.h"
#include "adc.h"
#define  uchar unsigned char
#define  uint  unsigned int
uint A ,B;
typedef unsigned char  U8;       /* defined for unsigned 8-bits integer variable 	  无符号8位整型变量  */
typedef signed   char  S8;       /* defined for signed 8-bits integer variable		  有符号8位整型变量  */
typedef unsigned int   U16;      /* defined for unsigned 16-bits integer variable 	  无符号16位整型变量 */
typedef signed   int   S16;      /* defined for signed 16-bits integer variable 	  有符号16位整型变量 */
typedef unsigned long  U32;      /* defined for unsigned 32-bits integer variable 	  无符号32位整型变量 */
typedef signed   long  S32;      /* defined for signed 32-bits integer variable 	  有符号32位整型变量 */
typedef float          F32;      /* single precision floating point variable (32bits) 单精度浮点数(32位长度) */
typedef double         F64;      /* double precision floating point variable (64bits) 双精度浮点数(64位长度) */
 #define    C4_IN	  DDRB &= ~(1 << PB4)		/*设置输入*/
 #define    C4_OUT	  DDRB |= (1 << PB4)		/*设置输出*/
 #define    C4_CLR	  PORTB &= ~(1 << PB4)	    /*置低电平*/
 #define    C4_SET	  PORTB |= (1 << PB4)		/*置高电平*/
 #define    C4_R	    PINB & (1 <<PB4)		/*读了电平*/

/**************************************************************************
                    通讯I/O空间定义
***************************************************************************/
 #define       COM_IN          C4_IN  
 #define       COM_OUT         C4_OUT
 #define       COM_CLR         C4_CLR
 #define       COM_SET         C4_SET
 #define       COM_R           C4_R
 
/**************************************************************************
                    全局变量定义区
***************************************************************************/
      U8       i;
      U8    U8FLAG,k;
      U8    U8count,U8temp;
      U8    U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
      U8    U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
      U8    U8comdata;
      U16   ReceiveHighByte;
      U16   ReceiveLowByte;
void port_init()
    {
	 DDRD = 0xFF;				
	 PORTD = 0x00;
	 DDRC = 0xFF;	
	 PORTC = 0x00; 
	 DDRA = 0xFE;	
	 PORTA = 0x00;
	 PORTC|=BIT(2)+BIT(5);
	 PORTC&=~BIT(4);
	 DDRB  = 0x0C;                   
     PORTB = 0x03;  
	} 
	void Delay(unsigned int i)
{
	while(i--);
}

void DelaymS (U16 dly)                   
{
	U16 i;
	for ( ; dly>0; dly--)
	{
	    WDR();
		for (i=0; i<1119; i++);        
	}
}


       void  Delay_10us(void)
      {
        U8 i;                     
        i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;i++;i++;
		i++;i++;i++;i++;i++;i++;i++;
       }
        void  COM(void)
      {
     
	        U8 i;
       for(i=0;i<8;i++)	   
	    {
		
	   	    U8FLAG=2;
	   	while((!(COM_R))&&U8FLAG++);
		 if(U8FLAG==1)break;
			Delay_10us();
			Delay_10us();
		    Delay_10us();
			Delay_10us();
	  		U8temp=0;
	     if(COM_R)U8temp=1;
		    U8FLAG=2;
		   while((COM_R)&&U8FLAG++);  
	   	 if(U8FLAG==1)break;
	   	 
		   U8comdata<<=1;
	   	   U8comdata|=U8temp;        //0
	     }//rof
	   
	}

	void RH(void)
	{
	 
	  //主机拉低18ms 
       COM_OUT;
       COM_CLR;
	   DelaymS(1);
	   COM_IN;
	   COM_SET;
	  
	 //总线由上拉电阻拉高 主机延时20us
	   Delay_10us();
	   Delay_10us();
	   Delay_10us();
	   Delay_10us();
	 //主机设为输入 判断从机响应信号 
	 //P2_0=1;
	 
	 //判断从机是否有低电平响应信号 如不响应则跳出,响应则向下运行	  
	  // if(!P2_0)		 //T !	 
	   if(COM_R)U8FLAG=1;
	   while(!(COM_R))		 
	   {
	   U8FLAG=2;
	   while((!(COM_R))&&U8FLAG++);
	   if(U8FLAG==1)break;
	   U8FLAG=2;
	   while((COM_R)&&U8FLAG++);
	   if(U8FLAG==1)break;
	 //数据接收状态		 
	   COM();
	   if(U8FLAG==1)break;
	   U8T_data_H_temp=U8comdata;
	   COM();
	   if(U8FLAG==1)break;
	   U8T_data_L_temp=U8comdata; 
	   COM();
	   if(U8FLAG==1)break;
	   U8RH_data_H_temp=U8comdata;
	   COM();
	   if(U8FLAG==1)break;
	   U8RH_data_L_temp=U8comdata;
	   COM();
	   if(U8FLAG==1)break;
	   U8checkdata_temp=U8comdata;
	   break;
	    }
	   COM_IN;
	   COM_SET;
	 
	   U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);
	   if(U8temp==U8checkdata_temp)
	   {
	   	  U8RH_data_H=U8T_data_H_temp;
	   	  U8RH_data_L=U8T_data_L_temp;
	   	  U8T_data_H=U8RH_data_H_temp;
	   	  U8T_data_L=U8RH_data_L_temp;
	   	  U8checkdata=U8checkdata_temp;
	   }
	   COM_IN;
	   COM_SET;
	}
void main()
	{
	uint adc;
	port_init();
	COM_IN;
    COM_SET;			    
	lcd12864_init();
	cls();					    
	delay_ms(2);
	locate(1,3);write_hz("滨州学院");
	locate(2,1);write_hz("创新实验室  OK");	  
	locate(3,1);write_hz("ATmega16 ADC学习");	  
	locate(4,1);write_hz("                ");
	while(1)
	   {  RH();
		  locate(4,3);
		  A=U8RH_data_H*256+U8RH_data_L;
		  B=U8T_data_H*256+U8T_data_L;
		  write_shuju(1,A/100+0x30);
		  write_shuju(1,A/10%10+0x30);
		  write_hz(".");
		  write_shuju(1,A%10+0x30);
		  write_hz("%");
		  write_shuju(1,B/100+0x30);
		  write_shuju(1,B/10%10+0x30);
		  write_hz(".");
		  write_shuju(1,B%10+0x30); 
		  write_hz("'C"); 
		  for(U8temp=0;U8temp<200;U8temp++)
 		   {
  		   DelaymS(10);
 
  		   }
	   }

	}




	

⌨️ 快捷键说明

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