?? 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 + -