標題: 51單片機擴展IO口PC口定義位變量怎么做 [打印本頁]

作者: LonelyLiar    時間: 2018-9-29 19:29
標題: 51單片機擴展IO口PC口定義位變量怎么做
本人想將PC口的低三位輸出作為LCD1602的RS RW E  3個量,但是sbit RS = PC^0;        //液晶引腳定義sbit RW = PC^1;
sbit EN = PC^2;
這樣Keil報錯了,不是很清楚為什么,我個人覺得應該是地址的問題,希望大神求解。
(控制字在主程序里寫了COM=0x80;)


1111111.png (47.75 KB, 下載次數(shù): 28)

1111111.png

2222.png (244.91 KB, 下載次數(shù): 26)

2222.png

作者: 飛云居士    時間: 2018-9-29 23:42
頭文件用的不是對應芯片的。也就是頭文件不對
作者: sxhwdz    時間: 2018-9-30 07:25
sbit是定義特殊功能寄存器的位變量。bit和sbit都是C51擴展的變量類型。也就是說,只有51單片機的特殊功能寄存器可以這樣定義,而8255的端口是不能這樣定義的。要注意的是,51單片機也不是所有特殊功能寄存器都能位定義的,只有地址能被8整除的特殊功能寄存器才可以。
作者: sxhwdz    時間: 2018-9-30 07:36
可以先定義:

#define RS  0x01
#define RW 0x02
#define EN 0x04

PC=RS|RW;    // RS=1; RW=1;EN=0;

也很方便的

作者: yousunny    時間: 2018-9-30 09:11
同意一樓的。你的問題是頭文件錯誤:不是定義變量問題
作者: LonelyLiar    時間: 2018-9-30 12:33
飛云居士 發(fā)表于 2018-9-29 23:42
頭文件用的不是對應芯片的。也就是頭文件不對

能告訴我是哪一個頭文件不對嗎,新手不是很懂




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1