📄 main.c
字号:
#include <iom16v.h>
#include <macros.h>
#include <string.h>
#include "port.h" // 位变量定义及串口初死化
#include "1602.h" //用的傻孩子的1602显示文件,其中显示数字的我改了一下.
unsigned int adczs; //ADC三次平均数
unsigned int re; //串口接收到的数据,
void main(void)
{
DDRC = 0b11111111;
PORTC = 0b00000000;
DDRB = 0b11111111;
PORTB = 0b00000000;
PORTDefine();
LCDInit();
PORTA=0;
DDRA=0;
Locate(1,1)
Print("[ADCL")
Locate(11,1)
Print("ADC16")
Locate(1,0)
Print("[ADCH")
Locate(16,1)
Print("]")
Locate(16,0)
Print("]")
ADMUX=0b01000000; //ADC0,
ADCSR=0B10001110; //
ADCSR|=0B01000000; //启动一次转换
delay_nms(1);
while(ADCSR&0b00010000) //这个可能没有起做用,我还不熟
{
unsigned int n;
unsigned int adcl;
unsigned int adch;
unsigned int adc;
unsigned int adcpjt;
ADCSR|=0B00000000; //清转换完成标志位,也不知道是不是M16已经硬件清除了.
adcl=0;
adch=0;
adc=0;
n++;
adcl=ADCL;
adch=ADCH;
PORTC=~adch;
adc=ADC;
adczs+=adc; //ADC转换三次的总数,
adcl=((adc<<8)>>8); //好像也是多余的
adch=((adc>>8)<<8); //前面已经读过了
ADCSR|=0B01000000;
Locate(7,1)
LCDDisplayNum(adcl);
Locate(7,0)
LCDDisplayNum(re);
Locate(11,0)
LCDDisplayNum(adcpj);
if (n>2)
{
adcpj=(adczs/3); ADC转换三次的平均数
adcpzs=0;
n=0;
}
UDR=(adcl);
while(UCSRA&=TXC)
{
;
}
UCSRA|=0B01000000;
UDR=(adc>>8);
while(UCSRA&=TXC)
{
;
}
while((UCSRA&=RXC))
{
;
}
re=UDR;
delay_nms(200);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -