Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- sbit LCD_RS at RB4_bit;
- sbit LCD_EN at RB5_bit;
- sbit LCD_D4 at RB0_bit;
- sbit LCD_D5 at RB1_bit;
- sbit LCD_D6 at RB2_bit;
- sbit LCD_D7 at RB3_bit;
- sbit LCD_RS_Direction at TRISB4_bit;
- sbit LCD_EN_Direction at TRISB5_bit;
- sbit LCD_D4_Direction at TRISB0_bit;
- sbit LCD_D5_Direction at TRISB1_bit;
- sbit LCD_D6_Direction at TRISB2_bit;
- sbit LCD_D7_Direction at TRISB3_bit;
- char cifra;
- int zbir = 0, zbir1=0;
- int chuvajCifra = 0;
- char *niza;
- int i;
- void main() {
- ANSEL = 0; //za postavuvanje na digitalni bitovi
- ANSELH = 0;
- C1ON_bit = 0; //se iskluchuvaat komparatorite
- C2ON_bit = 0;
- TRISA = 0;
- Lcd_Init();
- UART1_Init(9600); //inicijalizacija na komunikacijata so dadenata brzina od 9600bps
- Delay_ms(50); //chekanje na modulot da se sgtabilizira
- while (1) { //beskonechen ciklus
- if (UART1_Data_Ready()) { //ako ima podatoci za primanje
- cifra = UART1_Read(); //se prezemaat
- if(cifra == '$'){
- if(chuvajCifra == 0) { //ako e vnesen samo znak $
- break; //izlez od programata so $$
- }
- niza = " ";
- for(i = 2; zbir > 0; i--, zbir/=10){
- int c = zbir%10;
- niza[i] = c + '0';
- }
- Lcd_Cmd(_LCD_CLEAR); //zbrishi go ekranot
- Lcd_Out(1,1, niza); //ispechati ja prvata vrednost od nizata
- chuvajCifra = 0; // se resetira prom chuvajCifra
- }
- else if(chuvajCifra == 16) {
- chuvajCifra = 0;
- zbir = 0;
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Out(1,1,"Greska!");
- }
- else if(cifra < '0' || cifra > '9'){ //ako se vnese broj so povekje cifri
- chuvajCifra = 0;
- zbir = 0;
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Out(1,1,"Greska!");
- }
- else { zbir1 = cifra - '0';
- zbir = zbir + zbir1;
- chuvajCifra++;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement