📄 zz.c.100831151628
字号:
#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("测量电压 V");
while(1)
{ RH();
locate(4,5);
A=U8RH_data_H*256+U8RH_data_L;
B=U8T_data_H*256+U8T_data_L;
write_shuju(1,A/10+0x30);
write_shuju(1,A%10+0x30);
write_shuju(1,B/10+0x30);
write_shuju(1,B%10+0x30);
for(U8temp=0;U8temp<200;U8temp++)
{
DelaymS(10);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -