Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #define F_CPU 7372800UL
- #include <avr/io.h>
- #include <util/delay.h>
- #include <avr/interrupt.h>
- #include "lcd.h"
- uint8_t s = 0, m = 0, h = 0;
- uint8_t modalitet = 0;
- uint8_t chooseEditor = 0, edit[4] = {"", "Hours", "Minutes", "Seconds"};
- void writeMessage() {
- lcd_clrscr();
- lcd_puts("Hello World!");
- }
- void writeClock() {
- lcd_clrscr();
- lcd_gotoxy(4,0);
- char time[9];
- time[7] = '0' + s % 10;
- time[6] = '0' + s / 10;
- time[5] = ':';
- time[4] = '0' + m % 10;
- time[3] = '0' + m / 10;
- time[2] = ':';
- time[1] = '0' + h % 10;
- time[0] = '0' + h / 10;
- time[8] = '\0';
- lcd_puts(time);
- }
- void writeMod() {
- lcd_gotoxy(0,1);
- char mod[3] = {'M', '0' + modalitet, '\0'};
- lcd_puts(mod);
- if (modalitet == 1) {
- lcd_gotoxy(8,1);
- lcd_puts(edit[chooseEditor]);
- } else if (modalitet == 2) {
- lcd_gotoxy(11,1);
- }
- }
- void writeLCD() {
- if(modalitet == 0) {
- writeMessage();
- } else {
- writeClock();
- }
- writeMod();
- }
- ISR(TIMER0_COMP_vect) {
- s++;
- if(s == 60) {
- s = 0;
- m++;
- if(m == 60) {
- m = 0;
- h++;
- if(h == 24) {
- h = 0;
- }
- }
- }
- writeLCD();
- }
- void debounce() {
- }
- ISR(INT0_vect) {
- modalitet = (modalitet + 1) % 3;
- debounce();
- }
- int main(void) {
- DDRD = _BV(4);
- DDRA = 0xff;
- DDRB = 0xf0;
- PORTB = _BV(0) | _BV(1) | _BV(2);
- MCUCR = _BV(ISC01);
- GICR = _BV(INT0);
- TCCR0 = _BV(WGM01) | _BV(CS02) | _BV(CS00);
- OCR0 = 71;
- /*
- 100 = 7372800 / N(1+x)
- x = (73727 - N) / N
- N = 1024
- x = 71
- */
- TCCR1A = _BV(COM1B0) | _BV(COM1B1) | _BV(WGM10);
- TCCR1B = _BV(WGM12) | _BV(CS10);
- OCR1B = 128;
- TIMSK = _BV(OCIE0);
- sei();
- uint8_t deb = 0;
- lcd_init(LCD_DISP_ON);
- writeLCD();
- while(1) {
- if(!deb)
- deb--;
- if (bit_is_cleared(PINB,0)) {
- deb = 200;
- } else if (bit_is_cleared(PINB,1)) {
- }
- }
- }
Add Comment
Please, Sign In to add comment