『壹』 向高手請教89x51單片機7種定址方式的定址范圍
1、立即定址:立即數就是存放在程序存儲器中的常數,換句話說就是操作數(立即數)是包含在指令位元組中的。
如:MOV A,#20H,此時數據范圍:00H~FFH。
再如:MOV DPTR,#1000H,此時數據范圍:0000H~ffffH;
2、直接定址:
A:可以訪問內部數據存儲器RAM低128單元00~7FH
B:如果是高位則一定是特殊功能寄存器如P0,P1,SBUF,IE等等,而且也只有直接定址可以訪問特殊功能寄存器。
C:位定址空間20H~2FH
3、寄存器定址:
A:四個工作寄存器組也就是00H~1FH
B:其他特殊功能寄存器如A,B,PSW,DPTR等等
4、寄存器間接定址:
A:用@Ri可以定址內部或外部00H~FFH.
B:用@DPTR可以定址0000H到FFFFH
C:用PUSH或POP可以訪問范圍00~FFH
5、基址寄存器加變址寄存器的變址定址
A:以PC為基址范圍為256個位元組
B:以DPTR為基址范圍為64K
6、位定址:
A:20H~2FH的位定址空間
B:能被8整除的專用寄存器如P0,P1等等。
7、相對定址:
偏移量+指令單元地址,所以范圍為00H~FFH
『貳』 MCS-51單片機與AT89S5x系列單片機的關系是什麼 從內核、存儲器等角度說明兩
MCS-51是一個系列,AT89S5x屬於MCS-51系列,但出現比較晚,主要改進是編程由並口變成串口 。但AT89S5系列也已落伍。
AT89C51是ATMEL公司生產的MCS-51兼容單片機,採用CMOS工藝生產,有4K的FLASH ROM空間,程序區電可擦寫。MCS-51是INTEL公司開發的8位單片機系列,典型的產品有8031,8051。市面上所有兼容MCS-51的單片機都叫51兼容晶元,都可以用C51語言編程。
(2)89x51單片機擴展閱讀:
MCS-51單片機:集成的電路晶元,是採用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊矽片上構成的一個小而完善的計算機系統。
『叄』 #include <AT89X51.h>是不是只有51單片機才能用,MC9S12XS128MAA單片機可以用不
頭文件裡面主要是定義了引腳IO以及單片機內部寄存器地址和指令集,AT89X51.h主要用於51內核的單片機(寄存器地址是一樣的,可以通用,)但引腳不一定相同,所以建議找對應單片機的頭文件比較妥當。另外你這一款是飛思卡爾的單片機,不是51內核,這就更加不可以了。。。你可以查找XS128頭文件.h或者XS128頭文件.txt,網落上還是有很多資源的
『肆』 這段代碼什麼是什麼意思 #include <at89x51.h> #include <absacc.h> #define uchar unsigned char #define
#include <at89x51.h> //編譯預處理語句,指你的程序文件包含了at89x51.h,此文件是AT8951單片機
// 的頭文件.
#include <absacc.h> //使用其中定義的宏來訪問絕對地址.
#define uchar unsigned char //宏定義,用uchar來表示unsigned char.
#define//宏定義語句,不全
『伍』 關於單片機頭文件reg51.h和at89x51.h編譯的問題
這樣,你在我的電腦里(應該在c盤吧)找到Keil文件夾而後:Keil----C51-----INC----Atmel在Atmel文件里打開你說的頭文件一看裡面的設定就一目瞭然了,他們的定義不同,所以結果就不一樣了。
『陸』 51單片機頭文件中REG51.H、AT89C51.H和AT89X51.H之間的區別
只要你將這幾個文件打開,你就會發現,其實只是管腳和寄存器等的宏定義名稱不一樣而已。
『柒』 怎麼用89C51單片機實現用一個開關控制8個流水燈,要求開關按下去松開是亮的,再按下去松開是滅的
開關,接在 P2.7 與地之間。
#include <AT89X51.H> //預處理命令
void w(unsigned char k)
{
unsigned int a; //定義變數a 為int 類型
if (k) {
while(P2_7); //沒有按就循環,等待按下
for (a = 0; a < 600; a++); //延時消抖
while(P2_7); //沒有按就循環
}
else while(!P2_7); //按下就循環,等待松開
}
void main(void) //主函數名
{
while(1) {
w(1); P1_0 = 0; w(0); P1_0 = 1;
w(1); P1_1 = 0; w(0); P1_1 = 1;
w(1); P1_2 = 0; w(0); P1_2 = 1;
w(1); P1_3 = 0; w(0); P1_3 = 1;
w(1); P1_4 = 0; w(0); P1_4 = 1;
w(1); P1_5 = 0; w(0); P1_5 = 1;
w(1); P1_6 = 0; w(0); P1_6 = 1;
w(1); P1_7 = 0; w(0); P1_7 = 1;
}
}