Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * zad2.c
- *
- * Created: 2013-04-17 11:49:22
- * Author: student
- */
- #include <avr/io.h>
- #include <lcd.h>
- #include <one_wire.h>
- #include <util/crc16.h>
- void init_lcd(void){
- _delay_ms(15);
- COMM_LCD = 0x30;
- _delay_ms(5);
- COMM_LCD = 0x30;
- _delay_ms(0.2);
- COMM_LCD = 0x30;
- _delay_ms(30);
- COMM_LCD = 0x38;
- test_bf();
- pisz_com(0x0C);
- lcd_clear();
- pisz_com(0x06);
- lcd_home();
- pisz_com(0x48);
- pisz_ws(0x00);
- pisz_ws(0x00);
- pisz_ws(0x11);
- pisz_ws(0x00);
- pisz_ws(0x00);
- pisz_ws(0x11);
- pisz_ws(0xFE);
- pisz_ws(0x00);
- }
- void disp_txt_P(const char* _adres){
- volatile uint8_t al;
- for(int i=0;i<16;i++){
- al=pgm_read_byte(&_adres[i]);
- if(al == 0xFF) break;
- pisz_ws(al);
- }
- }
- void disp_txt_D(const char* _adres){
- volatile uint8_t al;
- for(int i=0;i<16;i++){
- al=_adres[i];
- if(al == 0x00) break;
- pisz_ws(al);
- }
- }
- void iB_send_cmd(char cmd)
- {
- for (int i = 0; i < 8; i++)
- {
- iB_send_bit(cmd & 0x01);
- cmd >>=1;
- }
- }
- void iB_zapal(char led)
- {
- iB_wy |=_BV(led);
- }
- void iB_zgas(char led)
- {
- iB_wy &=~_BV(led);
- }
- void iB_init()
- {
- // Diody: kier. WY
- iB_tx |=_BV(iB_RED) |_BV(iB_GREEN);
- // Linia 1-Wire: kier. WE (stan HIGH)
- iB_tx &=~_BV(iB_LINE);
- // Gasi diody
- iB_zgas(iB_RED);
- iB_zgas(iB_GREEN);
- // Linia 1-Wire: przygotowanie stanu LOW dla nadawania
- iB_wy &=~_BV(iB_LINE);
- }
- char iB_33h(char* Tab)
- {
- volatile char al;
- iB_send_cmd(0x33);
- char crc = 0;
- for (int i = 7; i > -1; i--) // 8 bajtów, od LSB
- {
- al = 0;
- for (int k = 0; k < 8; k++) // 8 bitów, od najmłodszego
- {
- al >>= 1;
- al |= iB_recv() << 7; // Bit na pozycji 7
- }
- crc = _crc_ibutton_update(crc, al);
- Tab[i] = al;
- }
- return(crc);
- }
- void pisz(int znak)
- {
- char tab[2] = {' ', '\0'};
- if(znak < 10)
- {
- tab[0] = '0'+znak;
- }
- else
- {
- tab[0] = 'A'+(znak-10);
- }
- disp_txt(tab);
- }
- int main(void)
- {
- MCUCR = _BV(SRE) |_BV(SRW10);
- XMCRA = _BV(SRW00) |_BV(SRW01) |_BV(SRW11);
- ADMUX = _BV(MUX0);
- init_lcd();
- ADCSRA ^= _BV(ADEN);
- iB_init();
- //char tab[80];
- //_iB_33h(tab);
- char tab[10];
- while(1)
- {
- lcd_clear();
- pisz_com(0x80);
- disp_txt("ACCESS DENIED");
- while(1)
- {
- iB_zapal(iB_RED);
- _delay_ms(500);
- if(iB_reset() == 0x00)
- {
- iB_33h(tab);
- pisz_com(0xC0);
- int i;
- for(i = 1; i < 7; ++i)
- {
- pisz((int)((tab[i]&0xf0)>>4));
- pisz((int)(tab[i]&0x0f));
- }
- break;
- }
- iB_zgas(iB_RED);
- _delay_ms(500);
- if(iB_reset() == 0x00)
- {
- iB_33h(tab);
- pisz_com(0xC0);
- int i;
- for(i = 1; i < 7; ++i)
- {
- pisz((int)((tab[i]&0xf0)>>4));
- pisz((int)(tab[i]&0x0f));
- }
- break;
- }
- }
- iB_zgas(iB_RED);
- //lcd_clear();
- pisz_com(0x80);
- disp_txt("ACCESS GRANTED");
- iB_zapal(iB_GREEN);
- _delay_ms(3000);
- iB_zgas(iB_GREEN);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment