Команда сдвига влево на ЖК-дисплее не работает должным образом - PullRequest
0 голосов
/ 24 января 2019

Итак, я пишу программу на MikroC, которая печатает текст на ЖК-дисплее и сдвигает его каждые 13 мс вправо.Когда текст полностью сдвинут вправо, он сдвигает его влево, и он движется таким же образом взад и вперед, когда обрабатывается первое прерывание.Во втором прерывании смещение отсутствует, и текст просто остается там.

sbit LCD_RS at RA4_bit;
sbit LCD_EN at RA5_bit;
sbit LCD_D4 at RA0_bit;
sbit LCD_D5 at RA1_bit;
sbit LCD_D6 at RA2_bit;
sbit LCD_D7 at RA3_bit;
sbit LCD_RS_Direction at TRISA4_bit;
sbit LCD_EN_Direction at TRISA5_bit;
sbit LCD_D4_Direction at TRISA0_bit;
sbit LCD_D5_Direction at TRISA1_bit;
sbit LCD_D6_Direction at TRISA2_bit;
sbit LCD_D7_Direction at TRISA3_bit;

char text[25], broj[50];
int i, turn, flag;

void interrupt(){
if(intf_bit==1){
if(flag==0) flag=1;
else flag=0;
intf_bit=0;
}
}

void main(){

i=0;
turn=1;
ANSEL=0;
ANSELH=0;
TRISB.B0=1;
strcpy(text, "Random Text That Has Some");
flag=0;
intcon=0x90;
LCD_init();
LCD_CMD(_LCD_Cursor_Off);
lcd_cmd(_lcd_clear);
lcd_out(1, 1, text);

while(1){
if(flag==1){
   if(turn==1) {
   LCD_cmd(_lcd_shift_right);
   i++;
   }
   if(turn==0){
   lcd_cmd(_lcd_shift_left);
   i--;
   }
   if(i==11){
   turn=0;
   }
   if(i==0){
   turn=1;
   }
   delay_ms(13);
}
}
}

Однако, когда я запускаю программу на симуляторе, когда она завершает смещение вправо, она не смещается назад влево.Он просто сдвигается вправо, пока первая буква не придет снова, и не пройдет полный круг.

Есть идеи?

...