#define F_CPU 1000000UL #include #include #include /* // f=20MHz -> T=0,05 µs uint8_t T0H = 6; // == 0.3 µs ~ 0.4 µs (+- 150ns) == [0.25, 0.55] µs uint8_t T1H = 14; // == 0.7 µs ~ 0.8 µs (+- 150ns) == [0.65, 0.95] µs uint8_t T0L = 15; // == 0.75 µs ~ 0.85µs (+- 150ns) == [0.70, 1.00] µs uint8_t T1L = 8; // == 0.35 µs ~ 0.45µs (+- 150ns) == [0.30, 0.60] µs uint8_t RES = 51; // > 50 µs */ #define wait6 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t") #define wait8 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t") #define wait14 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t") #define wait15 __asm__("nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t""nop\n\t") inline void writeZero() { PORTB = 1; wait6; PORTB = 0; wait15; } inline void writeOne() { PORTB = 1; wait14; PORTB = 0; wait8; } int main2() { DDRB = 1; // PORT C0 output do{ writeZero();writeZero();writeZero();writeZero();writeZero();writeZero();writeZero();writeZero(); writeZero();writeZero();writeZero();writeZero();writeZero();writeZero();writeZero();writeZero(); writeOne();writeOne();writeOne();writeOne();writeOne();writeOne();writeOne();writeOne(); _delay_ms(1); }while(1); } int main( void ) { DDRC |= (1 << PC0); while(1) { PORTC ^= (1 << PC0); _delay_ms(1000); } return 0; }