?? stc89c54rd.h
字號:
/**********************************************************************
Date: 2007 09 21
************************************************************************/
/************************************************************************/
#ifndef T89C51_H
#define T89C51_H
/************************************************************************/
/* ................................... 寄存器定義 ............................................ */
sfr P0 = 0x80; /* 漏極開路雙向I/O口;地址/數據復用.復位值:11111111b */
sbit P0_7 = P0^7;
sbit P0_6 = P0^6;
sbit P0_5 = P0^5;
sbit P0_4 = P0^4;
sbit P0_3 = P0^3;
sbit P0_2 = P0^2;
sbit P0_1 = P0^1;
sbit P0_0 = P0^0;
/* ............................................................................................ */
sfr SP = 0x81; /* 堆棧指針寄存器.復位值:00000111b */
sfr DPL = 0x82; /* DPTR,DPTR1通過AUXR1切換 */
sfr DPH = 0x83;
/* ............................................................................................ */
sfr PCON = 0x87; /* 電源控制.復位值:00x10000b */
#define SMOD 0x80 /* 1:使波特率加倍(模式1,2,3) */
#define SMOD0 0x40 /* 1:SCON.7(SCON1.7)表示幀檢測使能; 0:標準8052功能 */
#define PCON_REV5 0x20 /* 保留 */
#define POF 0x10 /* Power-off 標記 */
#define GF1 0x08 /* 用戶標志位 */
#define GF0 0x04 /* 用戶標志位 */
#define PD 0x02 /* 1:關機模式 */
#define IDL 0x01 /* 1:空閑模式.串口,定時器,中斷模塊繼續工作 */
/* ............................................................................................ */
sfr TCON = 0x88; /* 時鐘控制.復位值:00000000b */
sbit TF1 = TCON^7; /* timer1溢出標志,進入中斷服務程序后自動清零.可軟件置復位 */
sbit TR1 = TCON^6; /* 1:timer1開始計時/計數; 0:timer1停止計時/計數 */
sbit TF0 = TCON^5; /* timer0溢出標志,進入中斷服務程序后自動清零.可軟件置復位 */
sbit TR0 = TCON^4; /* 1:timer0開始計時/計數; 0:timer0停止計時/計數 */
sbit IE1 = TCON^3; /* 外部中斷1,邊沿觸發時進入中斷服務程序硬件清零 */
sbit IT1 = TCON^2; /* 外部中斷1類型. 1:下降沿觸發; 0:低電平觸發 */
sbit IE0 = TCON^1; /* 外部中斷0,邊沿觸發時進入中斷服務程序硬件清零 */
sbit IT0 = TCON^0; /* 外部中斷0類型. 1:下降沿觸發; 0:低電平觸發 */
/* ............................................................................................ */
sfr TMOD = 0x89; /* 計數器模式控制.復位值:00000000b */
#define GATE1 0x80 /* 門控制1. 1:INT1引腳為高 和 TR1置位使能TIMER1; 0:只需TR1置位 */
#define CT1 0x40 /* 定時器1,計數器1選擇. 1:計數T1引腳上的脈沖; 0:定時器 */
#define T1M1 0x20 /* 模式控制位. 00:13位模式; 01:無預置的16位模式 */
#define T1M0 0x10 /* 10:自動從TH1加載的8位模式; 11:停止計數器 */
#define GATE0 0x08 /* 門控制0. 1:INT0 和 TR0同時置位使能TIMER0; 0:只需TR0置位 */
#define CT0 0x04 /* 定時器0,計數器0選擇. 1:計數T0引腳上的脈沖; 0:定時器 */
#define T0M1 0x02 /* 模式控制位. 00:13位模式; 01:無預置的16位模式 */
#define T0M0 0x01 /* 10:自動從TH0加載的8位模式; 11:TL0,TH0分別是一個8位定時器/計數器. */
/* ............................................................................................ */
sfr TL0 = 0x8a; /* timer0低八位.復位值:00000000b */
sfr TL1 = 0x8b; /* timer1低八位.復位值:00000000b */
sfr TH0 = 0x8c; /* timer0高八位.復位值:00000000b */
sfr TH1 = 0x8d; /* timer1高八位.復位值:00000000b */
/* ............................................................................................ */
sfr AUXR = 0x8e; /* 輔助寄存器.復位值:xx0x1000b */
#define AUXR_REV7 0x80 /* 保留 */
#define AUXR_REV6 0x40 /* 保留 */
#define AUXR_REV5 0x20 /* 保留 */
#define AUXR_REV4 0x10 /* 保留 */
#define AUXR_REV3 0x08 /* 保留 */
#define AUXR_REV2 0x04 /* 保留 */
#define EXTRAM 0x02 /* XRAM讀寫方式(0~0XFF)
0:允許訪問內部擴展RAM
1:禁止訪問內部擴展RAM */
#define ALEOFF 0x01 /* ALE操作模式.
0:允許ALE信號輸出
1:禁止ALE信號輸出 */
/* ............................................................................................ */
sfr P1 = 0x90; /* 通用I/O,第二功能口.復位值:11111111b */
sbit P1_7 = P1^7; /* */
sbit P1_6 = P1^6; /* */
sbit P1_5 = P1^5; /* */
sbit P1_4 = P1^4; /* */
sbit P1_3 = P1^3; /* */
sbit P1_2 = P1^2; /* */
sbit P1_1 = P1^1; /* T2EX,定時器/計數器2 重載/捕捉觸發 */
sbit P1_0 = P1^0; /* T2,計數器2輸入口 */
/* ............................................................................................ */
sfr SCON = 0x98; /* 串口0控制.復位值:00000000b */
sbit FE = SCON^7; /* PCON.SMOD0為1時此位為幀錯誤位. 1:表示有幀錯誤,需軟件清零 */
sbit SM0 = SCON^7; /* 00:8位同步模式,波特率1/12或1/6 Tclk; 01:10位異步模式,波特率可變 */
sbit SM1 = SCON^6; /* 10:11位異步模式,波特率1/32或1/64Tclk; 11:11位異步模式,波特率可變 */
sbit SM2 = SCON^5; /* 在模式2,3,置1表示多機通信; 在模式0應該置零 */
sbit REN = SCON^4; /* 1:接收使能; 0:禁止接收 */
sbit TB8 = SCON^3; /* 多機通信時發送的第9位 */
sbit RB8 = SCON^2; /* 多機通信時收到的第9位.
在模式1如果SM2為0,則RB8就是接收到的停止位 */
sbit TI = SCON^1; /* 發送完成,由軟件清零 */
sbit RI = SCON^0; /* 接收了一字節數據,由軟件清零 */
/* ............................................................................................ */
sfr SBUF = 0x99; /* 串口0接收發送緩沖.復位值:xxxxxxxxb */
/* ............................................................................................ */
sfr P2 = 0xa0; /* 內部上拉的雙向I/O口;高8位地址.復位值:11111111b */
sbit P2_7 = P2^7;
sbit P2_6 = P2^6;
sbit P2_5 = P2^5;
sbit P2_4 = P2^4;
sbit P2_3 = P2^3;
sbit P2_2 = P2^2;
sbit P2_1 = P2^1;
sbit P2_0 = P2^0;
/* ............................................................................................ */
sfr AUXR1 = 0xa2; /* 輔助寄存器1.復位值:xxxx00x0b */
#define AUXR1_REV7 0x80 /* 保留 */
#define AUXR1_REV6 0x40 /* 保留 */
#define AUXR1_REV5 0x20 /* 保留 */
#define AUXR1_REV4 0x10 /* 保留 */
#define GF2 0x08 /* 用戶標志 */
#define AUXR1_REV2 0x04 /* 必須為0 */
#define AUXR1_REV1 0x02 /* 保留 */
#define DPS 0x01 /* 0:選擇DPTR0 1:選擇DPTR1 */
/* ............................................................................................ */
sfr IE = 0xa8; /* 中斷使能寄存器.復位值:00000000b */
sbit EA = IE^7; /* 中斷總開關 */
sbit EC = IE^6; /* PCA中斷使能 */
sbit ET2 = IE^5; /* time2中斷使能 */
sbit ES = IE^4; /* 串口0中斷使能 */
sbit ET1 = IE^3; /* time1中斷使能 */
sbit EX1 = IE^2; /* 外部中斷1使能 */
sbit ET0 = IE^1; /* time0中斷使能 */
sbit EX0 = IE^0; /* 外部中斷0使能 */
/* ............................................................................................ */
sfr SADDR = 0xa9; /* 串口0的廣播地址.復位值:00000000b */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -