??? 10/27/05 09:03 Read: times |
#103017 - I2C-driver Responding to: ???'s previous message |
Hello all,
again i am sending some uncommented codes for I2C, the commenting work is in progress from my side. In the mean time great persons like ANDY can give some hints to me(sorry for taking the freedom).I am using SDCC(v2.3) configured with MED editor. This piece of code will be stored in the same folder of the main program as iic.c and will be included in the main. If any of my technical wordings are wrong plz. correct me, since i am a hardware person doing with pure basics in software, i believe the comments of experienced people can help me to a great extend. thanks Jacob Here it is: #define set_clk() { SCL=1;SCL=1;SCL=1;SCL=1;SCL=1; } #define clr_clk() { SCL=0;SCL=0;SCL=0;SCL=0;SCL=0; } #define set_dat() { SDA=1;SDA=1;SDA=1;SDA=1;SDA=1; } #define clr_dat() { SDA=0;SDA=0;SDA=0;SDA=0;SDA=0; } #define start_iic() { clr_clk(); set_dat(); set_clk(); clr_dat(); } #define stop_iic() { clr_clk(); clr_dat(); set_clk(); set_dat(); } #define send_ack() { clr_clk(); clr_dat(); set_clk(); } #define send_no_ack() { clr_clk(); set_dat(); set_clk(); } unsigned char send_byte(unsigned char dat) { unsigned char re; for(re=0;re<8;re++) { clr_clk(); SDA=(dat&0x80); dat <<=1; set_clk(); } clr_clk(); SDA=1; set_clk(); return SDA; } unsigned char receive_byte() { unsigned char re, dat=0; for(re=0;re<8;re++) { clr_clk(); SDA=1; dat <<=1; set_clk(); dat|=SDA; set_clk(); } return dat; } |