Tlačítko, pěti-klik, on/off

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#16 Příspěvek od paycz »

trošku jsem laboroval

Kód: Vybrat vše

   unsigned cnt;
  unsigned butt;
  unsigned butt_1;
void InitTimer0(){
  OPTION_REG	 = 0x86;
  TMR0		 = 100;
  INTCON	 = 0xA0;
}

void Interrupt(){
  if (TMR0IF_bit){
  cnt++;
    TMR0IF_bit	 = 0;
    TMR0		 = 100;

  }
}


void main() {
  InitTimer0();
  TRISA1_bit = 00;
   TRISA0_bit = 00;
   TRISB = 0xFF;
   RA0_bit = 00;
  cnt = 0;
  butt= 0;
  butt_1= 0;
  
  do {
	if (cnt >= 300) {
          butt = 0;
          butt_1 = 0;
	  cnt = 0;

	}

  if (RB1_bit == 01)
{

delay_ms(300);
   if (RB1_bit == 01)
{

RA0_bit = 01;
}
butt_1++;
 if (butt_1 >= 1)
{
  butt++;
 if(butt == 5)
 {
 RA1_bit = 01;
 butt = 0;
  }
  }
  }
  }while(1);
  }

p.s už to funguje :)

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#17 Příspěvek od paycz »

Ahoj narazil jsem na další problém používám LCD pro výpis hodnoty výkonu, ale displey v simulátoru je nějaký rozhozený viz. příloha nevím zda mám chybu v kodu nebo to je chyba simulátoru děkuji za odpověď nechci kupovat součástky jestliže to nebude na 80% fungovat

Kód: Vybrat vše


sbit LCD_RS at RD0_bit;
sbit LCD_EN at RD1_bit;
sbit LCD_D7 at RD2_bit;
sbit LCD_D6 at RD3_bit;
sbit LCD_D5 at RD4_bit;
sbit LCD_D4 at RD5_bit;

sbit LCD_RS_Direction at TRISD0_bit;
sbit LCD_EN_Direction at TRISD1_bit;
sbit LCD_D7_Direction at TRISD2_bit;
sbit LCD_D6_Direction at TRISD3_bit;
sbit LCD_D5_Direction at TRISD4_bit;
sbit LCD_D4_Direction at TRISD5_bit;

float voltage, current, power;
  char Pwr[4];

void InitLCD_1(){
PORTD = 0XFF;
TRISD = 0XFF;
LCD_Init();
ADC_Init();
LCD_Cmd (_LCD_CURSOR_OFF);
LCD_Cmd (_LCD_CLEAR);
LCD_Out(1, 1, "PAY MOD");
delay_ms(100);

void main() {
InitLCD_1();

voltage = adc_Read(0);
  voltage = (voltage * 5 * 10)/ (1024);
  current = ADC_Read(1);
  current = (current * 0.00489)/ (0.47);
  Power = voltage * current;
  inttostr(power,pwr);

  Lcd_Out (2,1,"Power= ");
  Lcd_Out (2,8,Ltrim(pwr));
  Lcd_Out (2,14,"W");
  delay_ms(10);


}

problém vyřešen stačilo

Kód: Vybrat vše

Lcd_Out (2, 2,"Power= ");
přesunout k

Kód: Vybrat vše

Lcd_Out (2,1,"Power= ");
  Lcd_Out (2,8,Ltrim(pwr));
  Lcd_Out (2,14,"W");
Přílohy
display.PNG
(1.5 KiB) Staženo 41 x

Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 01:00

#18 Příspěvek od frpr666 »

Každý simulátor má svá omezení. Postupem času dojdeš k poznatku, že není nic lepšího, než "oživení" fyzického kusu.
Jen praxí získaš zkušenosti.
Přeji hodně zábavy s Arduinem :D

Uživatelský avatar
paycz
Příspěvky: 282
Registrován: 13 říj 2014, 02:00

#19 Příspěvek od paycz »

frpr666 píše: Přeji hodně zábavy s Arduinem :D
to neni arduino, ale pic v mikroC..... kdyby to bylo arduino tak nic neřeším jelikož není třeba programátor

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“