Helloeveryon 发表于 2011-4-3 14:36:44

关于c3-470的串口中断的1602显示程序,望大虾能指点一二

串口中程序如下:void GetRs232_Data() interrupt 4
{
uchar i,j,temp;
if(RI)
{
        RI=0;
        temp=SBUF;
       if(temp=='$')
                {
                Rsbuf =temp;
             for(i=1;i<sizeof(GPS_ASC)-1;i++)
                     {
                        j=GetUart_Data();
                            if(j<256)
                           {
                              Rsbuf=(uchar)j;
                              if(Rsbuf!=GPS_ASC) return;
                           }
                     }
//
                 for(;i<sizeof(Rsbuf);i++)
                {
                j=GetUart_Data();
                    if(j<256)
                      Rsbuf=(uchar)j;
                    else
                    break;
          
                }
                LCD_Write_String(5,0,Rsbuf+0x07,6);//
                }
   }
}
/*-----------------------------------------------*/
LCD_Write_String()函数是一个1602显示,x代表第几列,y代表第几行,s就是指向读取数据的指针,num是读取的位数
/*-----------------------------------------------*/
void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s,uchar num)
{
uchar i;   
if (y == 0)
        {   
       LCD_Write_Com(0x80 + x);   //表示第一行
        }
else
        {      
        LCD_Write_Com(0xC0 + x);      //表示第二行
        }      

for(i=0;i<num;i++)
        {
       LCD_Write_Data( *s);   
   s ++;   
        }
}

同样的一段程序放在主函数里面会有显示,如下:
void main()
{
uchar num;
unsigned char Data="Date:";
unsigned char Time="Time:";
//Buf_data=0;
//Buf_data=0;
LCD_Init();

LCD_Write_String(0x10,0,Data,5);
LCD_Write_String(0x10,1,Time,5);
..............}
可是在串口的那段就是没有显示,是什么原因???

Helloeveryon 发表于 2011-4-3 14:40:43

回复【楼主位】Helloeveryon
-----------------------------------------------------------------------

http://cache.amobbs.com/bbs_upload782111/files_38/ourdev_627919K8R6O0.png
显示如上 (原文件名:QQ截图未命名.png)
在keil调试时,接收的数组时有数据的,即Rsbuf,....是有值的。

lixupeng 发表于 2011-6-2 21:38:47

关注帮顶
页: [1]
查看完整版本: 关于c3-470的串口中断的1602显示程序,望大虾能指点一二