📄 main.h
字号:
#include <avr/io.h>
#include <avr/pgmspace.h>
#include <avr/signal.h>
#include <avr/eeprom.h>
#include <avr/delay.h>
#define uchar unsigned char
#define uint unsigned int
#define hc595_ser PB2
#define hc595_srclk PB1
#define hc595_rclk PB0
#define set_hc595_ser_ddr() DDRB|=1<<hc595_ser
#define set_hc595_ser() PORTB|=1<<hc595_ser
#define clr_hc595_ser() PORTB&=~(1<<hc595_ser)
#define set_hc595_srclk_ddr() DDRB|=1<<hc595_srclk
#define set_hc595_srclk() PORTB|=1<<hc595_srclk
#define clr_hc595_srclk() PORTB&=~(1<<hc595_srclk)
#define set_hc595_rclk_ddr() DDRB|=1<<hc595_rclk
#define set_hc595_rclk() PORTB|=1<<hc595_rclk
#define clr_hc595_rclk() PORTB&=~(1<<hc595_rclk)
#define ds1302_rst PC0
#define ds1302_io PC1
#define ds1302_sclk PC2
#define set_ds1302_rst_ddr() DDRC|=1<<ds1302_rst
#define set_ds1302_rst() PORTC|=1<<ds1302_rst
#define clr_ds1302_rst() PORTC&=~(1<<ds1302_rst)
#define set_ds1302_io_ddr() DDRC|=1<<ds1302_io
#define set_ds1302_io() PORTC|=1<<ds1302_io
#define clr_ds1302_io() PORTC&=~(1<<ds1302_io)
#define clr_ds1302_io_ddr() DDRC&=~(1<<ds1302_io)
#define in_ds1302_io() PINC&(1<<ds1302_io)
#define set_ds1302_sclk_ddr() DDRC|=1<<ds1302_sclk
#define set_ds1302_sclk() PORTC|=1<<ds1302_sclk
#define clr_ds1302_sclk() PORTC&=~(1<<ds1302_sclk)
#define ds1302_sec_reg 0x80
#define ds1302_min_reg 0x82
#define ds1302_hr_reg 0x84
#define ds1302_date_reg 0x86
#define ds1302_month_reg 0x88
#define ds1302_day_reg 0x8a
#define ds1302_year_reg 0x8c
#define ds1302_control_reg 0x8e
#define ds1302_charger_reg 0x90
#define ds1302_clkburst_reg 0xbe
#define buzzer PC4
#define set_buzzer_ddr() DDRC|=1<<buzzer
#define set_buzzer() PORTC|=1<<buzzer
#define clr_buzzer() PORTC&=~(1<<buzzer)
#define flash_buzzer() PORTC^=1<<buzzer
#define ds18b20_dq PC5
#define set_ds18b20_dq_ddr() DDRC|=1<<ds18b20_dq
#define set_ds18b20_dq() PORTC|=1<<ds18b20_dq
#define clr_ds18b20_dq() PORTC&=~(1<<ds18b20_dq)
#define clr_ds18b20_dq_ddr() DDRC&=~(1<<ds18b20_dq)
#define in_ds18b20_dq() PINC&(1<<ds18b20_dq)
#define ds18b20_read_rom 0x33
#define ds18b20_match_rom 0x55
#define ds18b20_skip_rom 0xcc
#define ds18b20_search_rom 0xf0
#define ds18b20_alarm_search_rom 0xec
#define ds18b20_write_ram 0x4e
#define ds18b20_read_ram 0xbe
#define ds18b20_copy_ram 0x48
#define ds18b20_convert_tem 0x44
#define ds18b20_eecall_eeprom 0xb8
#define ds18b20_read_power_supply 0xb4
#define set_time PIND0
#define set_timer PIND1
#define shift PIND2
#define add PIND3
#define ok PIND4
#define look_date PIND5
#define look_temperature PIND6
#define look_timer PIND7
#define clr_key_ddr() DDRD=0
#define set_key() PORTD=0xff
#define in_key() PIND
#define in_set_time() PIND&(1<<set_time)
#define in_set_timer() PIND&(1<<set_timer)
#define in_shift() PIND&(1<<shift)
#define in_add() PIND&(1<<add)
#define in_ok() PIND&(1<<ok)
#define in_look_date() PIND&(1<<look_date)
#define in_look_temperature() PIND&(1<<look_temperature)
#define in_look_timer() PIND&(1<<look_timer)
#define t0_tcnt 0xf7 //t0定时1ms
#define t1_tcnt 0xf1ee //t1定时500ms
//flag
#define hour_flag 0
#define buzzer_flag 1
#define timer0_available 2
#define timer1_available 3
#define timer2_available 4
#define timer3_available 5
#define timer4_available 6
#define timer5_available 7
#define timer0_address 0x0010
#define timer1_address 0x0012
#define timer2_address 0x0014
#define timer3_address 0x0016
#define timer4_address 0x0018
#define timer5_address 0x001a
//main
#ifdef main_c
uchar second_flag=0;
uchar year=0;
uchar month=0;
uchar day=0;
uchar week=0;
uchar hour=0;
uchar minute=0;
uchar second=0;
uchar half_second=0;
uchar display_buffer[8]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07};
uchar display_count=0;
PROGMEM const uchar display_code[10]=
{
0x3f,//0
0x06,//1
0x5b,//2
0x4f,//3
0x66,//4
0x6d,//5
0x7d,//6
0x07,//7
0x7f,//8
0x6f,//9
/*
0x40,//-
0x63,//o
0x39,//c
0x00,//空
0x80,//.
*/
};
uchar flag=0;
uchar flash_control=0;
uchar flash_var=0;
uchar timer0_hour=0;
uchar timer0_minute=0;
uchar timer1_hour=0;
uchar timer1_minute=0;
uchar timer2_hour=0;
uchar timer2_minute=0;
uchar timer3_hour=0;
uchar timer3_minute=0;
uchar timer4_hour=0;
uchar timer4_minute=0;
uchar timer5_hour=0;
uchar timer5_minute=0;
uchar temperature_low=0;
uchar temperature_high=0;
#else
extern uchar second_flag;
extern uchar year;
extern uchar month;
extern uchar day;
extern uchar week;
extern uchar hour;
extern uchar minute;
extern uchar second;
extern uchar half_second;
extern uchar display_buffer[8];
extern uchar display_count;
extern PROGMEM const uchar display_code[10];
extern uchar flag;
extern uchar flash_control;
extern uchar flash_var;
extern uchar timer0_hour;
extern uchar timer0_minute;
extern uchar timer1_hour;
extern uchar timer1_minute;
extern uchar timer2_hour;
extern uchar timer2_minute;
extern uchar timer3_hour;
extern uchar timer3_minute;
extern uchar timer4_hour;
extern uchar timer4_minute;
extern uchar timer5_hour;
extern uchar timer5_minute;
extern uchar temperature_low;
extern uchar temperature_high;
#endif
//ds1302
#ifdef ds1302_c
void ds1302_write(uchar reg,uchar data);
void ds1302_write_time(void);
uchar ds1302_read(uchar reg);
void ds1302_read_time(void);
void display_time(void);
void display_date(void);
void display_year(void);
uchar check_ds1302(void);
void check_timer(void);
void display_timer(uchar number,uchar timer_hour,uchar timer_minute);
#else
extern void ds1302_write(uchar reg,uchar data);
extern void ds1302_write_time(void);
extern uchar ds1302_read(uchar reg);
extern void ds1302_read_time(void);
extern void display_time(void);
extern void display_date(void);
extern void display_year(void);
extern uchar check_ds1302(void);
extern void check_timer(void);
extern void display_timer(uchar number,uchar timer_hour,uchar timer_minute);
#endif
//ds18b20
#ifdef ds18b20_c
void display_temperature(void);
void reset_ds18b20(void);
uchar read_ds18b20(void);
void write_ds18b20(uchar data);
void read_temperature(void);
void ack_ds18b20(void);
void convert_ds18b20(void);
#else
extern void display_temperature(void);
extern void reset_ds18b20(void);
extern uchar read_ds18b20(void);
extern void write_ds18b20(uchar data);
extern void read_temperature(void);
extern void ack_ds18b20(void);
extern void convert_ds18b20(void);
#endif
//key
#ifdef key_c
void key_scan(void);
void key_delay(void);
#else
extern void key_scan(void);
extern void key_delay(void);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -