/// flag=(bit)(P0&0x80); //狀態(tài)位第7位為1時禁止讀寫,為0時可讀寫
問題1. 就是P0&0x80怎么轉(zhuǎn)換位bit的???
//while(judge_lcd()); //檢測LCD是否為忙碌狀態(tài)
問題2. 這里面要是上面的要是為flag=1的話那就是要執(zhí)行程序了,但是lcd就是為1的話就是為忙碌的狀態(tài)。怎么可以執(zhí)行呢???
這里面是不是程序錯了,是否應該改為if(flag==0);
單片機源程序如下:
- /***********************lcd1602忙碌判斷子程序*******************/
- bit judge_lcd()
- {
- bit flag;
- e = 0;//
- rs = 0;
- rw = 1;
- e = 1;//
- delay_ms(1);
- flag=(bit)(P0&0x80); //狀態(tài)位第7位為1時禁止讀寫,為0時可讀寫
- e = 0;//
- return flag;
- }
- /**********************lcd1602寫指令子程序*******************/
- void write_com(uchar addr)
- {
- while(judge_lcd()); //檢測LCD是否為忙碌狀態(tài)
- rw=0;
- rs=0;
- P0=addr;
- delay_us(5);
- e=0;
- delay_us(5);
- e=1;
- delay_us(5);
- e=0;
- }
- /***********************lcd寫數(shù)據(jù)子程序*******************/
- void write_date(uchar date)
- {
- while(judge_lcd()); //檢測LCD是否為忙碌狀態(tài)
- rw=0;//寫操作
- rs=1;//寫數(shù)據(jù)模式
- P0=date;//將要寫的命令字送到數(shù)據(jù)總線上
- delay_us(5);
- e=0;//將使能端置低電平
- delay_us(5);
- e=1;//將使能端置高電平
- delay_us(5);
- e=0;//將使能端置低電平
- }
- /***********lcd1602寫指令及數(shù)據(jù)********************************/
- void write_com_date(uint addr,uint date)
- {
- write_com(addr);
- delay_ms(1);
- write_date(date);
- }
復制代碼
|