Итак, я пишу программу на 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);
}
}
}
Однако, когда я запускаю программу на симуляторе, когда она завершает смещение вправо, она не смещается назад влево.Он просто сдвигается вправо, пока первая буква не придет снова, и не пройдет полный круг.
Есть идеи?