STC12C5A.H

STC12C5A.H是STC12C5A單片機的頭檔案,主要用於定義代碼編輯需要用到的各種串口等,方便代碼的書寫和規範。

基本介紹

  • 中文名:STC12C5A.H
  • 屬性:STC12C5A單片機的頭檔案
  • 釋義:定義代碼編輯需要用到的各種串口
  • 特點:方便代碼的書寫和規範
說明,檔案內容,

說明

STC12C5A_H是STC12C5A單片機的頭檔案,主要用於定義代碼編輯需要用到的各種串口等,方便代碼的書寫和規範。

檔案內容

以下是該頭檔案的內容的中文解釋:
sfr PSW = 0xd0; //程式狀態字 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 CY AC F0 RS1 RS0 OV F1 P
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit CY = PSW^7; //進位標誌
sbit AC = PSW^6; //輔助進位標誌
sbit F0 = PSW^5; //用戶標誌
sbit RS1 = PSW^4; //暫存器組選擇位1
sbit RS0 = PSW^3; //暫存器組選擇位0
sbit OV = PSW^2; //溢出標誌
sbit P = PSW^0; //ACC的偶校驗位
/////////////////////////////////
sfr ACC = 0xe0; //累加器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit ACC7 = ACC^7; //累加器第7位
sbit ACC6 = ACC^6; //累加器第6位
sbit ACC5 = ACC^5; //累加器第5位
sbit ACC4 = ACC^4; //累加器第4位
sbit ACC3 = ACC^3; //累加器第3位
sbit ACC2 = ACC^2; //累加器第2位
sbit ACC1 = ACC^1; //累加器第1位
sbit ACC0 = ACC^0; //累加器第0位
/////////////////////////////////
sfr B = 0xf0; //B暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr SP = 0x81; //堆疊指針 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0111 0 0 0 0 0 1 1 1
/////////////////////////////////
sfr DPL = 0x82; //數據指針低位元組 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr DPH = 0x83; //數據指針高位元組 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr PCON = 0x87; //電源控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit
//位描述 SMOD SMOD0 LVDF POF GF1 GF0 PD IDL
//初始值=0011,0000 0 0 1 1 0 0 0 0
#define SMOD 0x80 //串口波特率倍速位,置1可使波特率快1倍
#define SMOD0 0x40 //FE/SM0選擇位,0:SCON.7為SM0 1:SCON.7為FE
#define LVDF 0x20 //低壓檢測中斷請求位,由硬體置1,需由軟體清0
#define POF 0x10 //上電復位標誌位,上電時由硬體置1,需由軟體清0
#define GF1 0x08 //通用標誌位1
#define GF0 0x04 //通用標誌位0
#define PD 0x02 //掉電控制位,寫1可以使MCU進入PowerDown模式
#define IDL 0x01 //空閒控制位,寫1可以使MCU進入Idle模式
/////////////////////////////////
sfr WAKE_CLKO = 0x8f; //掉電喚醒/時鐘輸出控制 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 PCAWAKEUP RXDPINIE T1PINIE T0PINIE LVD_WAKEUP BRTCLKO T1VLKO T0CLKO
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define PCAWAKEUP 0x80 //允許PCA的上升沿/下降沿中斷喚醒掉電MCU
#define RXD_PIN_IE 0x40 //允許RXD(P3.0)下降沿置位RI中斷時喚醒掉電MCU(必須打開相應中斷)
#define T1_PIN_IE 0x20 //允許T1(P3.5)下降沿置位T1中斷時喚醒掉電MCU(必須打開相應中斷)
#define T0_PIN_IE 0x10 //允許T0(P3.4)下降沿置位T0中斷時喚醒掉電MCU(必須打開相應中斷)
#define LVD_WAKEUP 0x08 //允許LVD(P4.6)的低壓檢測中斷喚醒掉電MCU(必須打開相應中斷)
#define BRTCLKOEN 0x04 //打開P1.0腳的BRT時鐘溢出脈衝,輸出的時鐘頻率為1/2倍的BRT溢出率
#define T1CLKOEN 0x02 //打開P3.5腳的定時器1時鐘溢出脈衝,輸出的時鐘頻率為1/2倍的T1溢出率
#define T0CLKOEN 0x01 //打開P3.4腳的定時器0時鐘溢出脈衝,輸出的時鐘頻率為1/2倍的T0溢出率
/////////////////////////////////
sfr CLK_DIV = 0x97; //時鐘分頻暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - CLKS2 CLKS1 CLKS0
//初始值=xxxx,x000 x x x x x 0 0 0
#define FOSCD1 0x00 //系統時鐘為Fosc
#define FOSCD2 0x01 //系統時鐘為Fosc/2
#define FOSCD4 0x02 //系統時鐘為Fosc/4
#define FOSCD8 0x03 //系統時鐘為Fosc/8
#define FOSCD16 0x04 //系統時鐘為Fosc/16
#define FOSCD32 0x05 //系統時鐘為Fosc/32
#define FOSCD64 0x06 //系統時鐘為Fosc/64
#define FOSCD128 0x07 //系統時鐘為Fosc/128
/////////////////////////////////
sfr BUS_SPEED = 0xa1; //數據匯流排速度控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - ALES1 ALES0 - RWS2 RWS1 RWS0
//初始值=xx10,x011 x x 1 0 x 0 1 1
#define ALES1 0x20 //P0地址建立時間和保持時間到ALE信號的下降沿的時鐘數
#define ALES0 0x10 //ALES1/ALES0=0/0:1個時鐘 0/1:2個時鐘 1/0:3個時鐘 1/1:4個時鐘
#define RWS2 0x04 //MOVX指令的時鐘數
#define RWS1 0x02 //RWS2/RWS1/RWS0=000:1個時鐘 001:2個時鐘 010:3個時鐘 011:4個時鐘
#define RWS0 0x01 // 100:5個時鐘 101:6個時鐘 110:7個時鐘 111:8個時鐘
/////////////////////////////////
sfr WDT_CONTR = 0xc1; //看門狗定時器控制器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 WDT_FLAG - EN_WDT CLR_WDT IDL_WDT PS2 PS1 PS0
//初始值=0x00,0000 0 x 0 0 0 0 0 0
#define WDT_FLAG 0x80 //看門狗復位標誌,當看門狗溢出產生復位後,硬體自動置1,需要由軟體清0
#define EN_WDT 0x20 //軟體使能看門狗,打開後不能用軟體的方式關閉
#define CLR_WDT 0x10 //清看門狗定時器
#define IDLE_WDT 0x08 //IDLE模式下,看門狗定時器是否繼續計時
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr AUXR = 0x8e; //輔助暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 T0x12 T1x12 UM0x6 BRTR S2SMOD BRTx12 EXTRAM S1BRS
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define T0x12 0x80 //定時器0時鐘控制,0:Fosc/12(傳統的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍於傳統速度)
#define T1x12 0x40 //定時器1時鐘控制,0:Fosc/12(傳統的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍於傳統速度)
#define UR0x6 0x20 //串口模式0的時鐘控制,0:Fosc/12(傳統的12分頻) 1:Fosc/2(2分頻,,即6倍於傳統速度)
#define BRTR 0x10 //獨立波特率發生器啟動控制位,1:啟動獨立波特率發生器 0:停止獨立波特率發生器
#define S2SMOD 0x08 //串口2波特率倍速位,置1可使串口2的波特率快1倍
#define BRTx12 0x04 //獨立波特率發生器時鐘控制,0:Fosc/12(傳統的12分頻) 1:Fosc/1(1T模式,不分頻,即12倍於傳統速度)
#define EXTRAM 0x02 //內部擴展RAM禁能位,0:內部擴展RAM有效 1:禁用內部擴展RAM
#define S1BRS 0x01 //串口1的波特率發生器選擇位,0:定時器1 1:獨立波特率發生器(注意串口2隻能夠使用獨立波特率發生器)
/////////////////////////////////
sfr AUXR1 = 0xa2; //輔助暫存器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - PCA_P4 SPI_P4 S2_P4 GF2 ADRJ - DPS
//初始值=x000,00x0 x 0 0 0 0 0 x 0
#define PCA_P4 0x40 //將PCA口映射到P4口,0:ECI(P1.2)CEX0(P1.3)CEX1(P1.4) 1:ECI(P4.1)CEX0(P4.2)CEX1(P4.3)
#define SPI_P4 0x20 //將SPI口映射到P4口,0:SCLK(P1.7)MISO(P1.6)MOSI(P1.5)SS(P1.4) 1:SCLK(P4.3)MISO(P4.2)MOSI(P4.1)SS(P4.0)
#define S2_P4 0x10 //將串口2映射到P4口,0:RXD2(P1.2)TXD2(P1.3) 1:RXD2(P4.2)TXD2(P4.3)
#define GF2 0x08 //通用標誌位2
#define ADRJ 0x04 //ADC結果調整,0:{ADC_RES[9876,5432],ADC_RESL[----,--10]} 1:{ADC_RES[----,--98],ADC_RESL[7654,3210]}
#define DPS 0x01 //DPTR0/DPTR1選擇位,0:DPTR0 1:DPTR1
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr P0 = 0x80; //I/O連線埠0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P07 = P0^7; //I/O口P0.7
sbit P06 = P0^6; //I/O口P0.6
sbit P05 = P0^5; //I/O口P0.5
sbit P04 = P0^4; //I/O口P0.4
sbit P03 = P0^3; //I/O口P0.3
sbit P02 = P0^2; //I/O口P0.2
sbit P01 = P0^1; //I/O口P0.1
sbit P00 = P0^0; //I/O口P0.0
/////////////////////////////////
sfr P1 = 0x90; //I/O連線埠0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P17 = P1^7; //I/O口P1.7
sbit P16 = P1^6; //I/O口P1.6
sbit P15 = P1^5; //I/O口P1.5
sbit P14 = P1^4; //I/O口P1.4
sbit P13 = P1^3; //I/O口P1.3
sbit P12 = P1^2; //I/O口P1.2
sbit P11 = P1^1; //I/O口P1.1
sbit P10 = P1^0; //I/O口P1.0
sbit ADCIN7 = P1^7; //ADC通道7的模擬信號輸入腳
sbit ADCIN6 = P1^6; //ADC通道6的模擬信號輸入腳
sbit ADCIN5 = P1^5; //ADC通道5的模擬信號輸入腳
sbit ADCIN4 = P1^4; //ADC通道4的模擬信號輸入腳
sbit ADCIN3 = P1^3; //ADC通道3的模擬信號輸入腳
sbit ADCIN2 = P1^2; //ADC通道2的模擬信號輸入腳
sbit ADCIN1 = P1^1; //ADC通道1的模擬信號輸入腳
sbit ADCIN0 = P1^0; //ADC通道0的模擬信號輸入腳
sbit SPISCLK = P1^7; //SPI匯流排的時鐘腳
sbit SPIMISO = P1^6; //SPI匯流排的主出從入腳
sbit SPIMOSI = P1^5; //SPI匯流排的主入從出腳
sbit SPISS = P1^4; //SPI匯流排的從機選擇腳
sbit CEX1 = P1^4; //比較/捕獲/PWM1外部引腳
sbit CEX0 = P1^3; //比較/捕獲/PWM0外部引腳
sbit ECI = P1^2; //比較/捕獲/PWM模組的外部時鐘輸入腳(最大值為Fosc/2)
sbit TXD2 = P1^3; //串口2數據輸出腳
sbit RXD2 = P1^2; //串口2數據輸入腳
sbit BRTCLKO = P1^0; //BRT時鐘溢出脈衝輸出腳
/////////////////////////////////
sfr P2 = 0xa0; //I/O連線埠2 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P27 = P2^7; //I/O口P2.7
sbit P26 = P2^6; //I/O口P2.6
sbit P25 = P2^5; //I/O口P2.5
sbit P24 = P2^4; //I/O口P2.4
sbit P23 = P2^3; //I/O口P2.3
sbit P22 = P2^2; //I/O口P2.2
sbit P21 = P2^1; //I/O口P2.1
sbit P20 = P2^0; //I/O口P2.0
/////////////////////////////////
sfr P3 = 0xb0; //I/O連線埠3 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P37 = P3^7; //I/O口P3.7
sbit P36 = P3^6; //I/O口P3.6
sbit P35 = P3^5; //I/O口P3.5
sbit P34 = P3^4; //I/O口P3.4
sbit P33 = P3^3; //I/O口P3.3
sbit P32 = P3^2; //I/O口P3.2
sbit P31 = P3^1; //I/O口P3.1
sbit P30 = P3^0; //I/O口P3.0
sbit RXD = P3^0; //串口1的數據接收口
sbit TXD = P3^1; //串口1的數據傳送口
sbit INT0 = P3^2; //外部中斷0的信號輸入口
sbit INT1 = P3^3; //外部中斷1的信號輸出口
sbit T0 = P3^4; //定時器0的外部信號輸入口
sbit T1 = P3^5; //定時器1的外部信號輸入口
sbit WR = P3^6; //外部數據存儲器的寫信號
sbit RD = P3^7; //外部數據存儲器的讀信號
sbit T0CLKO = P3^4; //定時器0的時鐘溢出脈衝輸出腳
sbit T1CLKO = P3^5; //定時器1的時鐘溢出脈衝輸出腳
/////////////////////////////////
sfr P4 = 0xc0; //I/O連線埠4 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P4.7 P4.6 P4.5 P4.4 P4.3 P4.2 P4.1 P4.0
//初始值=1111,1111 1 1 1 1 1 1 1 1
sbit P47 = P4^7; //I/O口P4.7
sbit P46 = P4^6; //I/O口P4.6
sbit P45 = P4^5; //I/O口P4.5
sbit P44 = P4^4; //I/O口P4.4
sbit P43 = P4^3; //I/O口P4.3
sbit P42 = P4^2; //I/O口P4.2
sbit P41 = P4^1; //I/O口P4.1
sbit P40 = P4^0; //I/O口P4.0
sbit RST = P4^7; //復位腳,可通過編程器設定
sbit EX_LVD = P4^6; //外部低壓檢測引腳
sbit P4SPISCLK = P4^3; //SPI匯流排的時鐘腳
sbit P4SPIMISO = P4^2; //SPI匯流排的主出從入腳
sbit P4SPIMOSI = P4^1; //SPI匯流排的主入從出腳
sbit P4SPISS = P4^0; //SPI匯流排的從機選擇腳
sbit P4CEX1 = P4^3; //比較/捕獲/PWM1外部引腳
sbit P4CEX0 = P4^2; //比較/捕獲/PWM0外部引腳
sbit P4ECI = P4^1; //比較/捕獲/PWM模組的外部時鐘輸入腳(最大值為Fosc/2)
sbit P4TXD2 = P4^3; //串口2數據輸出腳
sbit P4RXD2 = P4^2; //串口2數據輸入腳
/////////////////////////////////
sfr P5 = 0xc8; //I/O連線埠5 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - P5.3 P5.2 P5.1 P5.0
//初始值=xxxx,1111 x x x x 1 1 1 1
sbit P53 = P5^3; //I/O口P5.3
sbit P52 = P5^2; //I/O口P5.2
sbit P51 = P5^1; //I/O口P5.1
sbit P50 = P5^0; //I/O口P5.0
/////////////////////////////////
sfr P1M1 = 0x91; //I/O口1模式控制器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初/始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P1M0 = 0x92; //I/O口1模式控制器0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P0M1 = 0x93; //I/O口0模式控制器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P0M0 = 0x94; //I/O口0模式控制器0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P2M1 = 0x95; //I/O口2模式控制器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P2M0 = 0x96; //I/O口2模式控制器0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P3M1 = 0xb1; //I/O口3模式控制器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初/始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P3M0 = 0xb2; //I/O口3模式控制器0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P4M1 = 0xb3; //I/O口4模式控制器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P4M0 = 0xb4; //I/O口4模式控制器0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr P5M1 = 0xc9; //I/O口5模式控制器1 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,0000 x x x x 0 0 0 0
/////////////////////////////////
sfr P5M0 = 0xca; //I/O口5模式控制器0 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,0000 x x x x 0 0 0 0
/////////////////////////////////
// PxM1 PxM0
// 0 0 準雙向口
// 0 1 強推輓輸出
// 1 0 高阻輸入態
// 1 1 開漏輸出
/////////////////////////////////
sfr P1ASF = 0x9d; //P1口模擬功能控制位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 P17ASF P16ASF P15ASF P14ASF P13ASF P12ASF P11ASF P10ASF
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define P17ASF 0x80 //P1.7口為ADC輸入腳
#define P16ASF 0x40 //P1.7口為ADC輸入腳
#define P15ASF 0x20 //P1.7口為ADC輸入腳
#define P14ASF 0x10 //P1.7口為ADC輸入腳
#define P13ASF 0x08 //P1.7口為ADC輸入腳
#define P12ASF 0x04 //P1.7口為ADC輸入腳
#define P11ASF 0x02 //P1.7口為ADC輸入腳
#define P10ASF 0x01 //P1.7口為ADC輸入腳
/////////////////////////////////
sfr P4SW = 0xbb; //P4口的功能開關 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - LVD_P4.6 ALE_P4.5 NA_P4.4 - - - -
//初始值=x000,xxxx x 0 0 0 x x x x
#define P46EN 0x40 //傳統的EA腳 0:為LVD的信號引入腳 1:為P4.6
#define P45EN 0x20 //傳統的ALE腳 0:仍為ALE 1:為P4.5
#define P44EN 0x10 //傳統的PSEN腳 0:無任何功能 1:為P4.4
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr IE = 0xa8; //中斷使能暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 EA ELVD EADC ES ET1 EX1 ET0 EX0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit EA = IE^7; //總中斷開關
sbit ELVD = IE^6; //LVD中斷使能位
sbit EADC = IE^5; //ADC中斷使能位
sbit ES = IE^4; //串口中斷使能位
sbit ET1 = IE^3; //定時器1中斷使能位
sbit EX1 = IE^2; //外部中斷1中斷使能位
sbit ET0 = IE^1; //定時器0中斷使能位
sbit EX0 = IE^0; //外部中斷0中斷使能位
/////////////////////////////////
sfr IE2 = 0xaf; //中斷使能暫存器2 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - ESPI ES2
//初始值=xxxx,xx00 x x x x x x 0 0
#define ESPI 0x02 //SPI中斷使能位
#define ES2 0x01 //串口2中斷使能位
/////////////////////////////////
#define X0_INTNO 0 //外部中斷0中斷號,入口地址為0003H
#define T0_INTNO 1 //定時器0中斷號,入口地址為000BH
#define X1_INTNO 2 //外部中斷1中斷號,入口地址為0013H
#define T1_INTNO 3 //定時器1中斷號,入口地址為001BH
#define UART_INTNO 4 //串口中斷號,入口地址為0023H
#define ADC_INTNO 5 //ADC中斷號,入口地址為002BH
#define LVD_INTNO 6 //LVD中斷號,入口地址為0033H
#define UART2_INTNO 8 //串口2中斷號,入口地址為0043H
#define SPI_INTNO 9 //SPI中斷號,入口地址為004BH
/////////////////////////////////
sfr IP2 = 0xb5; //中斷優先權暫存器2 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - PSPI PS2
//初始值=xxxx,xx00 x x x x x x 0 0
#define PSPI 0x02 //SPI中斷優先權控制低位
#define PS2 0x01 //串口2中斷優先權控制低位
/////////////////////////////////
sfr IP2H = 0xb6; //中斷優先權暫存器2高位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - PSPIH PS2H
//初始值=xxxx,xx00 x x x x x x 0 0
#define PSPIH 0x02 //SPI中斷優先權控制高位
#define PS2H 0x01 //串口2中斷優先權控制高位
/////////////////////////////////
sfr IPH = 0xb7; //中斷優先權暫存器高位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 PPCAH PLVDH PADCH PSH PT1H PX1H PT0H PX0H
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define PPCAH 0x80 //PCA中斷優先權控制高位
#define PLVDH 0x40 //LVD中斷優先權控制高位
#define PADCH 0x20 //ADC中斷優先權控制高位
#define PSH 0x10 //串口中斷優先權控制高位
#define PT1H 0x08 //定時器1中斷優先權控制高位
#define PX1H 0x04 //外部中斷1中斷優先權控制高位
#define PT0H 0x02 //定時器0中斷優先權控制高位
#define PX0H 0x01 //外部中斷0中斷優先權控制高位
/////////////////////////////////
sfr IP = 0xb8; //中斷優先權暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 PPCA PLVD PADC PS PT1 PX1 PT0 PX0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit PPCA = IP^7; //PCA中斷優先權控制低位
sbit PLVD = IP^6; //LVD中斷優先權控制低位
sbit PADC = IP^5; //ADC中斷優先權控制低位
sbit PS = IP^4; //串口中斷優先權控制低位
sbit PT1 = IP^3; //定時器1中斷優先權控制低位
sbit PX1 = IP^2; //外部中斷1中斷優先權控制低位
sbit PT0 = IP^1; //定時器0中斷優先權控制低位
sbit PX0 = IP^0; //外部中斷0中斷優先權控制低位
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr TCON = 0x88; //定時器0/1控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit TF1 = TCON^7; //定時器1溢出標誌,由硬體置1,可由軟體清0或者在中斷處理程式完成後由硬體自動清0
sbit TR1 = TCON^6; //定時器1的啟動控制位,1:啟動定時器 0:停止定時器
sbit TF0 = TCON^5; //定時器0溢出標誌,由硬體置1,可由軟體清0或者在中斷處理程式完成後由硬體自動清0
sbit TR0 = TCON^4; //定時器0的啟動控制位,1:啟動定時器 0:停止定時器
sbit IE1 = TCON^3; //外部中斷1的中斷請求位,由硬體置1,可由軟體清0或者在中斷處理程式完成後由硬體自動清0
sbit IT1 = TCON^2; //外部中斷1的觸發類型,0:低電平觸發外部中斷 1:下降沿觸發外部中斷
sbit IE0 = TCON^1; //外部中斷0的中斷請求位,由硬體置1,可由軟體清0或者在中斷處理程式完成後由硬體自動清0
sbit IT0 = TCON^0; //外部中斷0的觸發類型,0:低電平觸發外部中斷 1:下降沿觸發外部中斷
/////////////////////////////////
sfr TMOD = 0x89; //定時器0/1模式暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 GATE C/T# M1 M0 GATE C/T# M1 M0
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define GATE1 0x80 //定時器1啟動控制位,0:TR1為1時啟動定時器1 1:TR1為1且INT1為高電平時才啟動定時器1
#define C_T1 0x40 //定時器/計數器選擇位,0:定時器(時鐘源為內部時鐘) 1:計數器(時鐘源為T1引腳的外部時鐘)
#define T1_M0 0x00 //定時器1操作模式0:13位定時器
#define T1_M1 0x10 //定時器1操作模式1:16位定時器
#define T1_M2 0x20 //定時器1操作模式2:8位自動重載定時器
#define T1_M3 0x30 //定時器1操作模式3:定時器1停止
#define GATE0 0x08 //定時器1啟動控制位,0:TR0為1時啟動定時器1 1:TR0為1且INT0為高電平時才啟動定時器0
#define C_T0 0x04 //定時器/計數器選擇位,0:定時器(時鐘源為內部時鐘) 1:計數器(時鐘源為T0引腳的外部時鐘)
#define T0_M0 0x00 //定時器0操作模式0:13位定時器
#define T0_M1 0x01 //定時器0操作模式1:16位定時器
#define T0_M2 0x02 //定時器0操作模式2:8位自動重載定時器
#define T0_M3 0x03 //定時器0操作模式3:TL0和TH0為兩組獨立8位定時器
/////////////////////////////////
sfr TL0 = 0x8a; //定時器0的低8位計數值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TL1 = 0x8b; //定時器1的低8位計數值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TH0 = 0x8c; //定時器0的高8位計數值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr TH1 = 0x8d; //定時器1的高8位計數值 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr SCON = 0x98; //串口控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 SM0/FE SM1 SM2 REN TB8 RB8 TI Ri
//初始值=0000,0000 0 0 0 0 0 0 0 0
sbit FE = SCON^7; //幀錯誤檢測位,當串口模組在接收數據時沒有檢測到正確的停止位時,FE被硬體置1,需要由軟體來清0(當SMOD0為1時,FE有效)
sbit SM0 = SCON^7; //串口模式設定位
sbit SM1 = SCON^6; //SM0/SM1=0/0:移位暫存器 0/1:8位可變波特率 1/0:9位固定波特率 1/1:9位可變波特率
sbit SM2 = SCON^5; //自動地址識別使能位
sbit REN = SCON^4; //使能串口接收模組
sbit TB8 = SCON^3; //傳送的第9位數據
sbit RB8 = SCON^2; //接收的第9位數據
sbit TI = SCON^1; //傳送完成中斷標誌
sbit RI = SCON^0; //接收完成中斷標誌
/////////////////////////////////
sfr SBUF = 0x99; //串口接收/傳送數據 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xxxx x x x x x x x x
/////////////////////////////////
sfr S2CON = 0x9a; //串口2控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 SM0/FE SM1 SM2 REN TB8 RB8 TI Ri
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define S2SM0 0x80 //串口2模式設定位
#define S2SM1 0x40 //SM0/SM1=0/0:移位暫存器 0/1:8位可變波特率 1/0:9位固定波特率 1/1:9位可變波特率
#define S2SM2 0x20 //自動地址識別使能位
#define S2REN 0x10 //使能串口2接收模組
#define S2TB8 0x08 //傳送的第9位數據
#define S2RB8 0x04 //接收的第9位數據
#define S2TI 0x02 //傳送完成中斷標誌
#define S2RI 0x01 //接收完成中斷標誌
/////////////////////////////////
sfr S2BUF = 0x9b; //串口2接收/傳送數據 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xxxx x x x x x x x x
/////////////////////////////////
sfr SADDR = 0xa9; //串口設備從地址暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr SADEN = 0xb9; //串口設備從地址禁止位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr BRT = 0x9c; //獨立波特率發生器重載值Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr ADC_CONTR = 0xbc; //ADC控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define ADC_POWER 0x80 //ADC模組電源控制位
#define ADC_SPEEDLL 0x00 //每次轉換需要420個時鐘周期
#define ADC_SPEEDL 0x20 //每次轉換需要280個時鐘周期
#define ADC_SPEEDH 0x40 //每次轉換需要140個時鐘周期
#define ADC_SPEEDHH 0x60 //每次轉換需要70個時鐘周期
#define ADC_FLAG 0x10 //ADC轉換完成標誌
#define ADC_START 0x08 //ADC開始轉換控制位
#define ADC_CHS2 0x04 //ADC通道選擇位2
#define ADC_CHS1 0x02 //ADC通道選擇位1
#define ADC_CHS0 0x01 //ADC通道選擇位0
/////////////////////////////////
sfr ADC_RES = 0xbd; //ADC結果高位元組 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr ADC_RESL = 0xbe; //ADC結果低位元組 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr IAP_DATA = 0xc2; //IAP數據暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=1111,1111 1 1 1 1 1 1 1 1
/////////////////////////////////
sfr IAP_ADDRH = 0xc3; //IAP地址高位暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr IAP_ADDRL = 0xc4; //IAP地址低位暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr IAP_CMD = 0xc5; //IAP命令暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xx00 x x x x x x 0 0
#define IAP_IDLE 0x00 //IAP待機命令
#define IAP_READ 0x01 //IAP讀位元組數據命令
#define IAP_PROGRAM 0x02 //IAP位元組編程命令
#define IAP_ERASE 0x03 //IAP扇區擦除命令(每扇區512位元組))
/////////////////////////////////
sfr IAP_TRIG = 0xc6; //IAP命令觸發暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=xxxx,xxxx x x x x x x x x
#define IAP_TRIG0 0x5a //IAP功能觸發命令1
#define IAP_TRIG1 0xa5 //IAP功能觸發命令2
/////////////////////////////////
sfr IAP_CONTR = 0xc7; //IAP控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 IAPEN SWBS SWRST CMD_FAIL - WT2 WT1 WT0
//初始值=0000,0000 0 0 0 0 0 0 0 0
#define IAPEN 0x80 //IAP使能開關
#define SWBS 0x40 //軟啟動選擇,0:從用戶AP啟動 1:從ISP啟動
#define SWRST 0x20 //觸發軟體復位
#define CMD_FAIL 0x10 //IAP命令失敗標誌
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr SPSTAT = 0xcd; //SPI狀態暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 SPIF WCOL - - - - - -
//初始值=11xx,xxxx 1 1 x x x x x x
#define SPIF 0x80 //SPI傳輸完成標誌,當SPI中斷使能時會觸發SPI中斷請求,需要用軟體向此位寫"1"來清0
#define WCOL 0x40 //SPI寫衝突標誌,需要用軟體向此位寫"1"來清0
/////////////////////////////////
sfr SPCTL = 0xce; //SPI控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0
//初始值=0000,0100 0 0 0 0 0 1 0 0
#define SSIG 0x80 //SS忽略位,1:由MSTR確定主/從 0:由SS腳確定主/從
#define SPEN 0x40 //SPI模組使能位
#define DORD 0x20 //SPI數據順序,1:LSB(先收/發最低位) 0:MSB(先收/發最高位)
#define MSTR 0x10 //主/從模式選擇位
#define CPOL 0x08 //SPI時鐘極性
#define CPHA 0x04 //SPI相位選擇
#define SPSPEEDHH 0x00 //最快的速度,CPU_CLK/4
#define SPSPEEDH 0x01 //最快的速度,CPU_CLK/16
#define SPSPEEDL 0x02 //最快的速度,CPU_CLK/64
#define SPSPEEDLL 0x03 //最快的速度,CPU_CLK/128
/////////////////////////////////
sfr SPDAT = 0xcf; //SPI數據暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
sfr CCON = 0xd8; //PCA控制暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 CF CR - - - - CCF1 CCF0
//初始值=00xx,xx00 0 0 x x x x 0 0
sbit CF = CCON^7; //PCA計數器溢出標誌,當PCA中斷使能時會觸發PCA中斷請求,需要用軟體清0
sbit CR = CCON^6; //PCA計數器啟動控制位,寫"1"啟動東計數器
sbit CCF1 = CCON^1; //PCA模組1中斷標誌,需要用軟體清0
sbit CCF0 = CCON^0; //PCA模組0中斷標誌,需要用軟體清0
/////////////////////////////////
sfr CMOD = 0xd9; //PCA模式暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 CIDL - - - CPS2 CPS1 CPS0 ECF
//初始值=0xxx,0000 0 x x x 0 0 0 0
#define CIDL 0x80 //計時器陣列空閒控制,0:空閒模式下PCA繼續工作 1:空閒模式下PCA停止工作
#define PCACLK0 0x00 //Fosc/12
#define PCACLK1 0x02 //Fosc/2
#define PCACLK2 0x04 //定時器0的溢出率
#define PCACLK3 0x06 //ECI外部時鐘
#define PCACLK4 0x08 //Fosc/1
#define PCACLK5 0x0a //Fosc/4
#define PCACLK6 0x0c //Fosc/6
#define PCACLK7 0x0e //Fosc/8
#define ECF 0x01 //PCA計數器溢出中斷允許位
/////////////////////////////////
sfr CCAPM0 = 0xda; //PCA模組0模式暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - ECOM0 CAPP0 CAPN0 MAT0 TOG0 PWM0 ECCF0
//初始值=x000,0000 x 0 0 0 0 0 0 0
#define PCA0_ECOM 0x40 //使能比較器0
#define PCA0_CAPP 0x20 //使能PCA模組0的上升沿捕獲
#define PCA0_CAPN 0x10 //使能PCA模組0的下降沿捕獲
#define PCA0_MAT 0x08 //匹配使能,當PCA的計數值與模組0設定的值相匹配時,置CCON.CCF0
#define PCA0_TOG 0x04 //翻轉控制位,當PCA的計數值與模組0設定的值相匹配時,翻轉CEX0的電平
#define PCA0_PWM 0x02 //脈寬調製模式,使能CEX0為脈寬調製輸出口
#define PCA0_ECCF 0x01 //使能CCF0中斷
/////////////////////////////////
sfr CCAPM1 = 0xdb; //PCA模組1模式暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - ECOM1 CAPP1 CAPN1 MAT1 TOG1 PWM1 ECCF1
//初始值=x000,0000 x 0 0 0 0 0 0 0
#define PCA1_ECOM 0x40 //使能比較器1
#define PCA1_CAPP 0x20 //使能PCA模組1的上升沿捕獲
#define PCA1_CAPN 0x10 //使能PCA模組1的下降沿捕獲
#define PCA1_MAT 0x08 //匹配使能,當PCA的計數值與模組1設定的值相匹配時,置CCON.CCF1
#define PCA1_TOG 0x04 //翻轉控制位,當PCA的計數值與模組1設定的值相匹配時,翻轉CEX1的電平
#define PCA1_PWM 0x02 //脈寬調製模式,使能CEX1為脈寬調製輸出口
#define PCA1_ECCF 0x01 //使能CCF1中斷
/////////////////////////////////
//CCAPM0 - ECOM CAPP CAPN MAT TOG PWM CCF
// 00H 0 0 0 0 0 0 0 0 無操作,待機狀態
// 42H 0 1 0 0 0 0 1 0 8位PWM輸出,無中斷
// 63H 0 1 1 0 0 0 1 1 8位PWM輸出,產生CEX0上升沿中斷
// 53H 0 1 0 1 0 0 1 1 8位PWM輸出,產生CEX0下降沿中斷
// 73H 0 1 1 1 0 0 1 1 8位PWM輸出,產生CEX0跳變中斷
// 20H 0 x 1 0 0 0 0 0 16位捕獲模式,CEX0上升沿觸發捕獲
// 10H 0 x 0 1 0 0 0 0 16位捕獲模式,CEX0下降沿觸發捕獲
// 30H 0 x 1 1 0 0 0 0 16位捕獲模式,CEX0跳變觸發捕獲
// 48H 0 1 0 0 1 0 0 0 16位軟體定時器
// 4CH 0 1 0 0 1 1 0 0 16位高速脈衝輸出
/////////////////////////////////
sfr CL = 0xe9; //PCA計數器低8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr CH = 0xf9; //PCA計數器高8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr CCAP0L = 0xea; //PCA模組0暫存器低8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr CCAP1L = 0xeb; //PCA模組1暫存器低8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr CCAP0H = 0xfa; //PCA模組0暫存器高8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr CCAP1H = 0xfb; //PCA模組1暫存器高8位 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr PCA_PWM0 = 0xf2; //PCA0模式PWM輔助暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - EPC0H EPC0L
//初始值=xxxx,xx00 x x x x x x 0 0
/////////////////////////////////
sfr PCA_PWM1 = 0xf3; //PCA1模式PWM輔助暫存器 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 - - - - - - EPC1H EPC1L
//初始值=xxxx,xx00 x x x x x x 0 0

相關詞條

熱門詞條

聯絡我們