📄 main.c
字号:
#include"main.h"
const unsigned char xtal=16; //unit is MHZ
volatile ulong key_sum;
volatile uchar key_flag=0,key_bit=0,next_sf=0;
//volatile ulong test_data=0;
volatile uint adc_sum;
const char screen0[] PROGMEM="welcome master!!";
const char screen1[] PROGMEM="thanks for using";
const char screen2[] PROGMEM="key a:pagedown";
const char screen3[] PROGMEM="key b:pagedown";
const char screen4[] PROGMEM="key c:shift";
const char screen5[] PROGMEM="key d:dec point";
const char screen6[] PROGMEM="key e:backspace";
const char screen7[] PROGMEM="key f:enter num";
volatile char *screen[screen_max] PROGMEM={(char*)screen0,(char*)screen1,
(char*)screen2,(char*)screen3,(char*)screen4,(char*)screen5,(char*)screen6
,(char*)screen7};
volatile uchar line=1;
//const char flash[] PROGMEM="this is flash";
//char *sram="this is sram";
jmp_buf env;
int main(void)
{
// unsigned char i,j,k,h;
if(setjmp(env))
goto hell;
lcd_init();
// uart_init();
keyboard_init();
sei();
clear_screen();
// pwm_phase(62000,3500);
// start_an_adc();
// write_adc();
write_string_flash((char*)pgm_read_word(&screen[0]));
write_position(2,1);
write_string_flash((char*)pgm_read_word(&screen[1]));
adc_init(0,0);//channel PF0~3;0:AVCC,1:internal 2.56
spi_init();
ad9835_init();
next();
ulong f,max_f,start_f,end_f;
uint max=0;
clear_screen();
write_string("start_f:");
start_f=key_input();
ad9835(start_f);
// delay_ms(20);
write_position(2,1);
write_string("end_f:");
end_f=key_input();
clear_screen();
for(f=start_f;f<end_f;f+=8)
{
ad9835(f);
start_an_adc();
write_position(1,1);
write_adc();
if((max<adc_sum))
{
max=adc_sum;
max_f=f;
}
//delay_ms(1);
}
ad9835(max_f);
adc_sum=max;
write_position(1,1);
write_adc();
write_position(2,1);
write_dec(max_f);
next();
clear_screen();
write_string("1:inf 0:finite");
write_position(2,1);
write_string("input:");
if(key_input())
{
clear_screen();
}
else
{
clear_screen();
write_string("time(ms):");
timer(key_input());
}
clear_screen();
write_string("start?");
write_position(2,1);
write_string("yes: C+F");
next();
clear_screen();
uint adc_sum_last=max;
f=max_f+1;
// ad9835(f);
start_an_adc();
while(1)
{
if(adc_sum>adc_sum_last)
f+=1;
// max=adc_sum;
if(adc_sum<adc_sum_last)
f-=1;
adc_sum_last=adc_sum;
ad9835(f);
start_an_adc();
write_position(1,1);
// write_adc();
write_dec(f);
}
/*
sbi(porta,0);
while(1)
{
if(gbi(PINA,0))
{
f-=2;
ad9835(f);
start_an_adc();
for(;max<adc_sum;)
{
f-=2;
ad9835(f);
start_an_adc();
}
}
else
{
f+=2;
ad9835(f);
start_an_adc();
for(;max<adc_sum;)
{
f+=2;
ad9835(f);
start_an_adc();
}
}
write_position(2,1);
write_adc();
write_dec(f);
}
while(1)
{
while(key_input());
clear_screen();
write_string("fre:");
ad9835(key_input());
write_position(2,1);
write_string("finished");
}
cbi(portb,0);
ad9835_init();
ad9835_spi(0x3367);
ad9835_spi(0x3267);
ad9835_spi(0x3167);
ad9835_spi(0x3067);
sbi(portb,0);
write_string("finished");
// write_freq(456);
//square_wave(50); //hz timer2 PB7->output,OC2
write_freq(100000);
// write_string("input mv and f:");
// write_position(2,1);
pwm_phase(30000,1000); //(voltage_mv,frequency_hz)
clear_screen();
// start_an_adc();
while(1)
{
clear_screen();
start_an_adc();
write_adc();
}
next();
write_position(2,1);
start_an_adc();
write_adc();
write_string("voltage:");
// mV timer1 PB6->output,OC1B
while(1)
{
//write_position(1,9);
start_an_adc();
write_adc();
delay_ms(10);
}
write_position(2,1);
write_string("fre:");
icp();
next();
// delay_ms(500);
clear_screen();
write_string_flash((char*)pgm_read_word(&screen[0]));
write_position(2,1);
write_string_flash((char*)pgm_read_word(&screen[1]));
delay_ms(500);
*/
hell:ad9835(0);
clear_screen();
write_string("the end");
while(1)
{
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -