Andrew82 0 26 мая, 2010 Опубликовано 26 мая, 2010 (изменено) · Жалоба atmega8+ds18b20 проблема в протеусе не работает, есть вопрос, а в живую будет работать кто-нить подскажите?! Написано в кодевижион сильно ногами не пинать только начинаю разбираться подскажите в живую будет работать или нет и какие фьюзы ставить при прошивке от встроенного генератора?! #define xtal 1000000L #include <mega8.h> #asm .equ __w1_port=0x12 ; //PORTD .equ __w1_bit=0 #endasm #include <ds18b20.h> #include <delay.h> #include <ctype.h> #include <stdlib.h> #include <string.h> #include <math.h> #define MAX_DEVICES 8 unsigned char pos=0; unsigned char str[4]; unsigned char st; unsigned char mesto[4]={ 0b11110111, 0b11111011, 0b11111101, 0b11111110 }; unsigned char rom_codes[MAX_DEVICES][9]; unsigned char i,devices; int z; interrupt [TIM2_OVF] void timer2_ovf_isr(void) { TCNT2=0x00; } interrupt [TIM0_OVF] void timer0_ovf_isr(void) { TCNT0=0x00; switch (str[pos]) { case '0': i=0b00111111; break; case '1': i=0b00000110; break; case '2': i=0b01011011; break; case '3': i=0b01001111; break; case '4': i=0b01100110; break; case '5': i=0b01101101; break; case '6': i=0b01111101; break; case '7': i=0b00000111; break; case '8': i=0b01111111; break; case '9': i=0b01101111; break; case '-': i=0b01000000; // Минус break; case 'B': i=0b01100011; // Градус break; case 'C': i=0b00000000; // пусто break; }; PORTC=mesto[pos]; PORTB=i; pos++; if (pos==4) pos=0; } void main(void) { #asm("cli"); TIMSK=0b01000001; TCCR0=0b00000001; TCCR2=0b00000010; DDRB=0xFF; DDRC=0b00001111; DDRD=0x01; PORTB=0b01000000; PORTC=0b00001111; devices=w1_search(0xf0,rom_codes); z=ds18b20_temperature(&rom_codes[0][0]); //z=100; itoa(z, str); if (z>=100) str[3]='B'; if (z==0) {str[0]='C';str[1]='C';str[2]='0';str[3]='B';goto ggg;}; if ((z>=10) && (z<100)) { str[3]='B'; str[2]=str[1]; str[1]=str[0]; str[0]='C'; goto ggg; }; if ((z>0) && (z<10)) { st=str[0]; str[0]='C'; str[1]='C'; str[2]=st; str[3]='B'; goto ggg; }; if (abs(z)<10) { str[3]='B'; str[2]=str[1]; str[1]=str[0]; str[0]='C'; goto ggg; }; if (abs(z)>=10) { str[3]='B'; }; ggg: #asm("sei"); } Изменено 26 мая, 2010 пользователем rezident Оформление цитаты исходника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
_Pasha 0 26 мая, 2010 Опубликовано 26 мая, 2010 · Жалоба В протеусе 7.6 sp4 такая связка работает. Ищите в себе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andrew82 0 27 мая, 2010 Опубликовано 27 мая, 2010 · Жалоба В протеусе 7.6 sp4 такая связка работает. Ищите в себе. не могли бы выслать проект на протеусе может я что не так делаю? протеус сейчас закачаю у меня показывает на индикаторе все девятки Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться