stoneman icon

MIKS Lab 4 (Mikro C)

stoneman | PRO | 05/25/15 09:27:14 AM UTC | 0 ⭐ | 553 👁️ | Never ⏰ | []
C |

2.46 KB

|

None

|

0 👍

/

0 👎

int hex2int(char *a, unsigned int len)
{
    int i;
    int val = 0;
 
    for(i=0;i<len;i++)
       if(a[i] <= 57)
        val += (a[i]-48)*(1<<(4*(len-1-i)));
       else
        val += (a[i]-55)*(1<<(4*(len-1-i)));
    return val;
}
 
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;
 
unsigned char readbuff[64] absolute 0x500;
unsigned char writebuff[64] absolute 0x540;
 
void main() 
{
     int ulaz_status;
     char hex_cifra[3];
     int tmp_broj;
     int i;
     int broj_konverzija = 0;
     
     ADCON1 |= 0x0F;                         // Configure all ports with analog function as digital
     CMCON  |= 7;                            // Disable comparators
     
     Lcd_Init();                             // Initialize Lcd
     HID_Enable(&readbuff,&writebuff);       // Enable HID communication
     
     Lcd_Cmd(_LCD_CLEAR);
     Lcd_Out(1,1,"Broj karaktera:");
     
     while(1)
     {
         USB_Polling_Proc();
         Lcd_Out(2,1, broj_konverzija);
         ulaz_status = HID_Read();
         if(ulaz_status != 0)
         {
             for(i=0; i<64; i=i+1)
             {
                 ByteToHex(readbuff[i], hex_cifra);
                 tmp_broj = hex2int(hex_cifra, 2);
                 if(tmp_broj == 0)
                 {
                     tmp_broj = 45;
                 }
                 else
                 {
                     if(tmp_broj >= 32 && tmp_broj <=126)
                     {
                         if(tmp_broj >= 97 && tmp_broj <=122)
                         {
                             tmp_broj -= 32;
                             broj_konverzija++;
                         }
                     }
                     else
                     {
                         tmp_broj = 45;
                     }
                 }
                 
                 //prevesti tmp_broj u Hex broj
                 //Dobijeni Hex broj smestiti u lokaciju i
                 writebuff[i]=readbuff[i];
             }
             Lcd_Out(//promenjiva za postavljanje kursora na pocetak drugog reda);
             HID_Write(&writebuff,64);
         }
     }
}

Comments