koukám sice že je to na pic, ale ta teorie je na 51 určitě stejná. Koukal jsem na ten program:
void _Soft_USART_Write(unsigned short chr) {
unsigned short mask=1,i;
unsigned int data;
data = chr << 1;
data &= ~0x0001; // START bit (=0).
// 10 output bits
for (i=0;i<9;i++) { // lsb 1st 8 bits
if (mask & data) {
asm {CLRW}
SU_set; // output low for logic 1
} else {
SU_res;// output high for logic 0
asm {CLRW}
}
mask <<=1;
delay_us(395); // 2400 simulate to calibrate the loop.
}
SU_set; // stop bit
delay_us(417); // 2400
}
a myslím si že ho celkem chápu. Prostě vezmu data a masku a navzájem to 8x rotuju a pak posílám 1 nebo 0,ale není mě jasné co dělá to
asm{CLRW}
a
delay_us(395);
myslím že jedno bude ještě něco s tím odesláním na port a druhé nastavení rychlosti přenosu???