所以我正在用 MikroC 编写一个程序,它在 LCD 上打印一个文本,并每 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);
}
}
}
但是,当我在模拟器上运行程序时,当它完成向右移动时,它不会向左移动。它只是向右移动,直到第一个字母再次出现并转了一圈。
有任何想法吗?