code
code
#include <avr/io.h>
#define F_CPU 9600000UL
#include <util/delay.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
uint8_t i,k,ct,total,dat,res[10],rpt;
int8_t vol,num;
uint16_t va;
uint8_t t[]={0x7E,0xFF,0x06,com,0x00,0x00,dat,0xEF};
_delay_ms(20);
for(k=0;k<8;k++){
PORTB&=~(1<<2);_delay_us(104); //Start
for(i=0;i<8;i++){
if((t[k]>>i)&1){PORTB|=(1<<2);}else{PORTB&=~(1<<2);}
_delay_us(98);
}
PORTB|=(1<<2);_delay_us(104); //Stop
}
}
ISR(PCINT0_vect){ //UART RX
for(k=0;k<10;k++){
ct=0;
while(PINB & 0x02){
ct++;
_delay_us(1);
if(ct>250){break;}
}
_delay_us(156);
for(i=0;i<8;i++){
res[k]>>=1;
if(PINB & 0x02){res[k]|=(1<<7);}
_delay_us(98);
}
}
void music(){
tx(0x03,num);
eep_write(0x00,num);
}
void volume(){
tx(0x06,vol);
eep_write(0x02,vol);
}
int main(void){
DDRB =0b00000100;
PORTB =0b00011101; //PB4:Next ,PB3:Volume, PB2:TX, PB1:RX, PB0:Previous
_delay_ms(1500);
//-------------------------------------
while(1){
ADCSRA|=0b01000000;
while(ADCSRA & 0b01000000);
va=ADC;
if(va<100){ //Repeat
rpt^=1;
_delay_ms(1000);
}