找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1394|回復: 2
打印 上一主題 下一主題
收起左側

這個LcdShowDat為什么沒有調用呀,搞不懂呀

[復制鏈接]
跳轉到指定樓層
樓主
ID:453409 發(fā)表于 2018-12-24 15:13 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void delay_ms(unsigned int d);
void ScanKeyboard();
void LcdShowStr(unsigned char x,unsigned char y,unsigned char*str);
void LcdShowDat(unsigned char x,unsigned char y,unsigned char dat);
unsigned char cnt=0,w=0,key=0;
unsigned char code KeyCode[]=
{0xe7,0xd7,0xb7,0x77,0xeb,0xdb,0xbb,0x7b,0xed,0xdd,0xdb,0xbd,0x7d,0xee,0xde,0xbe,0x7e};
void main()
{       
        unsigned char temp;
        unsigned char str[]="hello";
        TMOD=0X01;
        TH0=0X4C;
        TL0=0X00;
        IE=0X82;
        TR0=1;
        InitLcd1602();
        LcdShowStr(2,0,str);
        while(1);
        {
        temp=w;
        LcdShowDat(4,1,temp);
        }
}
void LcdWaitReady()
{
        unsigned char sta;
        LCD1602_DB=0XFF;
        LCD1602_RS=0;
        LCD1602_RW=1;
        do{
                LCD1602_E=1;
                sta=LCD1602_DB;
                LCD1602_E=0;
        }
        while(sta&0x80);
}
void LcdWriteCmd(unsigned char cmd)
{
        LcdWaitReady();
        LCD1602_RS=0;
        LCD1602_RW=0;
        LCD1602_DB=cmd;
        LCD1602_E=1;
        LCD1602_E=0;
}
void LcdWriteDat(unsigned char dat)
{
        LcdWaitReady();
        LCD1602_RS=1;
        LCD1602_RW=0;
        LCD1602_DB=dat;
        LCD1602_E=1;
        LCD1602_E=0;
}
void LcdSetCursor(unsigned char x,unsigned char y)
{
        unsigned char addr;
        if(y==0)
        addr=0x00+x;
        else
        addr=0x40+x;
        LcdWriteCmd(addr|0x80);
}
void LcdShowStr(unsigned char x,unsigned char y,unsigned char*str)
{
        LcdSetCursor(x,y);
        while(*str!='\0')
        {
                LcdWriteDat(*str++);
        }
}
void LcdShowDat(unsigned char x,unsigned char y,unsigned char dat)
{
        LcdSetCursor(x,y);
        LcdWriteDat(dat);
}
void InitLcd1602()
{
        LcdWriteCmd(0x38);
        LcdWriteCmd(0x0c);
        LcdWriteCmd(0x06);
        LcdWriteCmd(0x01);
}
void ScanKeyboard()
{
        unsigned char scan1,scan2,keyboard;
        unsigned char i;
        P2=0xf0;
        scan1=P2;
        if((scan1&0xf0)!=0xf0)
        {
                delay_ms(10);
                scan1=P2;
                if((scan1&0xf0)!=0xf0)
                {
                        P2=0xf0;
                        scan2=P2;
                        keyboard=scan1|scan2;
                        while((P2&0x0f)!=0x0f)
                        for(i=0;i<=15;i++)
                        {
                                if(keyboard==KeyCode[i])
                                key=i;
                        }
                }
        }
}
void clock()interrupt 1
{
        unsigned char key,i;
        cnt++;
        TH0=0X4C;
        TL0=0X00;
        ScanKeyboard();
        if(key==1)
        {
                w=0x20;
        }
        if(key==2)
        {
                for(i=0;cnt<=20;i++)
                {
                 w=0x61+0x01;
                 if(i==3)
                 {
                         i=0;
                         w=0x61;
                 }
                }
        }
}
void delay_ms(unsigned int d)
{
        unsigned char i;
        while(d--)
        {                                                                                                                                       
                for(i=0;i<=110;i++);
        }
}
*** WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS
    SEGMENT: ?PR?_LCDSHOWDAT?ABC

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發(fā)
ID:451718 發(fā)表于 2018-12-24 17:52 | 只看該作者
主程序最后一個語句不是么?
另外,你這個程序能跑起來么? 真的有點佩服。建議你還是先初步了解一下單片機的教程,你框架結構有很大的問題。  中斷里面處理了太多事,還沒有等中斷恢復,第二次中斷就該響應了。
回復

使用道具 舉報

板凳
ID:453692 發(fā)表于 2018-12-24 17:54 | 只看該作者
子程序調用函數(shù)是不是有問題,是不是涉及到是否修改數(shù)值問題。三種傳值方式
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表