所以我正在用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);
}
}
}
但是,当我在模拟器上运行该程序时,它向右移动并不会向左移动。它只是右移,直到第一个字母再次出现,然后变成一个完整的圆圈。
有什么想法吗?