?? stcmcu+
字號:
/*------------------------------------------------*/
/* --- 宏晶科技 STCMCU ---------------------------*/
/* --- Mobile: (86)13922805190 -------------------*/
/* --- Fax: 86-755-82944243 ----------------------*/
/* --- Tel: 86-755-82948412 ----------------------*/
/* --- Web: www.STCMCU.com -----------------------*/
/* 適用于: STC15Fxx STC15Lxx ---------------*/
/* ------- STC15FxxE STC15LxxE ---------------*/
/* ------- STC15FxxXE STC15LxxXE ---------------*/
/* ------- STC15FxxCPP STC15LxxCPP ---------------*/
/* ------- STC15FxxAD STC15LxxAD ---------------*/
/* ------- IAP15FxxAD IAP15LxxAD ---------------*/
/*------------------------------------------------*/
#ifndef __STC15_H__
#define __STC15_H__
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 Bit0
//位描述 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
//位描述 - RXDPINIE T1PINIE T0PINIE - BRTCLKO T1VLKO T0CLKO
//初始值=x000,x000 x 0 0 0 x 0 0 0
#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 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 WKTCL = 0xaa; //掉電喚醒定時器低字節 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 B7 B6 B5 B4 B3 B2 B1 B0
//初始值=0000,0000 0 0 0 0 0 0 0 0
/////////////////////////////////
sfr WKTCH = 0xab; //掉電喚醒定時器高字節 Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit0
//位描述 WKTEN - - - B11 B10 B9 B8
//初始值=0xxx,0000 0 x x x 0 0 0 0
#define WKTEN 0x80 //掉電喚醒定時器使能位,置1時,當CPU進入掉電模式后開始計時,計時單周期約為560us,最大可計4095次(大約2.3s)
/////////////////////////////////
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 - BRTx12 EXTRAM S1BRS
//初始值=0000,x000 0 0 0 0 x 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 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
//位描述 UART_P1 PCA_P4 - - GF2 - - DPS
//初始值=01xx,0xx0 0 1 x x 0 x x 0
#define UAER_P1 0x80 //將串口映射到P1口,0:RXD(P3.0)TXD(P3.1) 1:RXD2(P1.6)TXD2(P1.7)
#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 GF2 0x08 //通用標志位2
#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 CEX1 = P1^4; //比較/捕獲/PWM1外部引腳
sbit CEX0 = P1^3; //比較/捕獲/PWM0外部引腳
sbit ECI = P1^2; //比較/捕獲/PWM模塊的外部時鐘輸入腳(最大值為Fosc/2)
sbit P1TXD = P1^7; //可選串口數據輸出腳
sbit P1RXD = P1^6; //可選串口數據輸入腳
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
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -