下面是适用于Keil uVision软件里Atmel的AT89S52单片机的头文件,里面定义了AT89S52的结构信息对应的变量,如SFR特殊功能寄存器的定义。其中“sfr”、“sbit”是Keil软件C51编译器支持的数据类型,具体可以下载后面附上的Keil入门的PDF文档。
使用方法:
将该头文件置于“Keil安装文件夹/C51/INC/Atmel”文件夹下,则在Keil uVision2/3软件里新建工程时就可以找到AT89S52单片机了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 | /*AT89S52.H Header file for the Atmel AT89S52. Copyright (c) 1988-2002 Keil Elektronik GmbH and Keil Software, Inc. All rights reserved. File from: http://www.ninthday.net --------------------------------------------------------------------------*/ #ifndef __AT89S52_H__ #define __AT89S52_H__ /*------------------------------------------------ Byte Registers Note: Only Registers located on addresses that are evenly divisible by 8 are bit addressable. All other registers use bit masks. ------------------------------------------------*/ sfr P0 = 0x80; /* Port 0 */ sfr SP = 0x81; /* Stack Pointer */ sfr DPL = 0x82; /* Data Pointer Low Byte */ sfr DP0L = 0x82; /* Alternate Definition */ sfr DPH = 0x83; /* Data Pointer High Byte */ sfr DP0H = 0x83; /* Alternate Definition */ sfr DP1L = 0x84; /* Data Pointer 1 Low Byte */ sfr DP1H = 0x85; /* Data Pointer 1 High Byte */ sfr PCON = 0x87; /* Power Control Register */ sfr TCON = 0x88; /* Timer Control Register */ sfr TMOD = 0x89; /* Timer Mode Control Register */ sfr TL0 = 0x8A; /* Timer 0 Low Byte */ sfr TL1 = 0x8B; /* Timer 1 Low Byte */ sfr TH0 = 0x8C; /* Timer 0 High Byte */ sfr TH1 = 0x8D; /* Timer 1 High Byte */ sfr AUXR = 0x8E; /* Auxiliary Register*/ sfr P1 = 0x90; /* Port 1 */ sfr SCON = 0x98; /* Serial Port Control */ sfr SBUF = 0x99; /* Serial Port Buffer */ sfr P2 = 0xA0; /* Port 2 */ sfr AUXR1 = 0xA2; /* Auxiliary Register1 */ sfr WDTRST = 0xA6; /* Watch Dog Timer Reset */ sfr IE = 0xA8; /* Interrupt Enable Register 0 */ sfr P3 = 0xB0; /* Port 3 */ sfr IP = 0xB8; /* Interrupt Priority Register */ sfr T2CON = 0xC8; /* Timer 2 Control */ sfr T2MOD = 0xC9; /* Timer 2 Mode */ sfr RCAP2L = 0xCA; /* Timer 2 Capture Low Byte */ sfr RCAP2H = 0xCB; /* Timer 2 Capture High Byte */ sfr TL2 = 0xCC; /* Timer 2 Low Byte */ sfr TH2 = 0xCD; /* Timer 2 High Byte */ sfr PSW = 0xD0; /* Program Status Word */ sfr ACC = 0xE0; /* Accumulator */ sfr B = 0xF0; /* B Register */ /*------------------------------------------------ P0 (0x80) Bit Registers ------------------------------------------------*/ sbit P0_0 = 0x80; sbit P0_1 = 0x81; sbit P0_2 = 0x82; sbit P0_3 = 0x83; sbit P0_4 = 0x84; sbit P0_5 = 0x85; sbit P0_6 = 0x86; sbit P0_7 = 0x87; /*------------------------------------------------ PCON (0x87) Bit Values ------------------------------------------------*/ #define IDL_ 0x01 /* Idle Mode Bit: 1=Active */ #define PD_ 0x02 /* Alternate definition */ #define GF0_ 0x04 /* General Purpose Flag 0 */ #define GF1_ 0x08 /* General Purpose Flag 1 */ #define SMOD_ 0x80 /* Double Baud Rate Bit for use with Timer 1 */ /*------------------------------------------------ TCON (0x88) Bit Registers ------------------------------------------------*/ sbit IT0 = 0x88; /* Interrupt 0 Type Control Bit */ sbit IE0 = 0x89; /* Interrupt 0 Edge Flag */ sbit IT1 = 0x8A; /* Interrupt 1 Type Control Bit */ sbit IE1 = 0x8B; /* Interrupt 1 Edge Flag */ sbit TR0 = 0x8C; /* Timer 0 Run Control Bit */ sbit TF0 = 0x8D; /* Timer 0 Overflow Flag */ sbit TR1 = 0x8E; /* Timer 1 Run Control Bit */ sbit TF1 = 0x8F; /* Timer 1 Overflow Flag */ /*------------------------------------------------ TMOD (0x89) Bit Values ------------------------------------------------*/ #define T0_M0_ 0x01 /* Timer 0 Mode Bit 0 */ #define T0_M1_ 0x02 /* Timer 0 Mode Bit 1 */ #define T0_CT_ 0x04 /* Timer 0 Counter/Timer Select: 0=Counter, 1=Timer */ #define T0_GATE_ 0x08 /* Timer 0 Gate Control */ #define T1_M0_ 0x10 /* Timer 1 Mode Bit 0 */ #define T1_M1_ 0x20 /* Timer 1 Mode Bit 1 */ #define T1_CT_ 0x40 /* Timer 1 Counter/Timer Select: 0=Counter, 1=Timer */ #define T1_GATE_ 0x80 /* Timer 1 Gate Control */ #define T1_MASK_ 0xF0 /* Timer 0 Mask */ #define T0_MASK_ 0x0F /* Timer 1 Mask */ /*------------------------------------------------ P1 (0x90) Bit Registers ------------------------------------------------*/ sbit P1_0 = 0x90; sbit P1_1 = 0x91; sbit P1_2 = 0x92; sbit P1_3 = 0x93; sbit P1_4 = 0x94; sbit P1_5 = 0x95; sbit P1_6 = 0x96; sbit P1_7 = 0x97; sbit T2 = 0x90; /* External input to Timer/Counter 2, clock out */ sbit T2EX = 0x91; /* Timer/Counter 2 capture/reload trigger & dir ctl */ sbit MOSI = 0x95; /* SPI: MOSI - Master data output, slave data input */ sbit MISO = 0x96; /* SPI: MISO - Master data input, slave data output */ sbit SCK = 0x97; /* SPI: SCK - Master clock output, slave clock input */ /*------------------------------------------------ SCON (0x98) Bit Registers ------------------------------------------------*/ sbit RI = 0x98; /* Receive Interrupt Flag */ sbit TI = 0x99; /* Transmit Interrupt Flag */ sbit RB8 = 0x9A; /* 9th data bit received */ sbit TB8 = 0x9B; /* 9th data bit to be transmitted in modes 2 & 3 */ sbit REN = 0x9C; /* Receive Enable */ sbit SM2 = 0x9D; /* Serial Port Mode Bit 2 */ sbit SM1 = 0x9E; /* Serial Port Mode Bit 1 */ sbit SM0 = 0x9F; /* Serial Port Mode Bit 0 */ /*------------------------------------------------ P2 (0xA0) Bit Registers ------------------------------------------------*/ sbit P2_0 = 0xA0; sbit P2_1 = 0xA1; sbit P2_2 = 0xA2; sbit P2_3 = 0xA3; sbit P2_4 = 0xA4; sbit P2_5 = 0xA5; sbit P2_6 = 0xA6; sbit P2_7 = 0xA7; /*------------------------------------------------ IE (0xA8) Bit Registers ------------------------------------------------*/ sbit EX0 = 0xA8; /* External Interrupt 0 Enable: 1=Enabled */ sbit ET0 = 0xA9; /* Timer 0 Interrupt Enable: 1=Enabled */ sbit EX1 = 0xAA; /* External Interrupt 1 Enable: 1=Enabled */ sbit ET1 = 0xAB; /* Timer 1 Interrupt Enable: 1=Enabled */ sbit ES = 0xAC; /* SPI and UART Interrupt Enable: 1=Enabled */ sbit ET2 = 0xAD; /* Timer 2 Interrupt Enable: 1=Enabled */ sbit EA = 0xAF; /* Global Interrupt Enable: 0=Disable all interrupts */ /*------------------------------------------------ P3 (0xB0) Bit Registers (Mnemonics & Ports) ------------------------------------------------*/ sbit P3_0 = 0xB0; sbit P3_1 = 0xB1; sbit P3_2 = 0xB2; sbit P3_3 = 0xB3; sbit P3_4 = 0xB4; sbit P3_5 = 0xB5; sbit P3_6 = 0xB6; sbit P3_7 = 0xB7; sbit RXD = 0xB0; /* Serial data input */ sbit TXD = 0xB1; /* Serial data output */ sbit INT0 = 0xB2; /* External interrupt 0 */ sbit INT1 = 0xB3; /* External interrupt 1 */ sbit T0 = 0xB4; /* Timer 0 external input */ sbit T1 = 0xB5; /* Timer 1 external input */ sbit WR = 0xB6; /* External data memory write strobe */ sbit RD = 0xB7; /* External data memory read strobe */ /*------------------------------------------------ IP (0xB8) Bit Registers ------------------------------------------------*/ sbit PX0 = 0xB8; /* External Interrupt 0 Priority Bit */ sbit PT0 = 0xB9; /* Timer 0 Interrupt Priority Bit */ sbit PX1 = 0xBA; /* External Interrupt 1 Priority Bit */ sbit PT1 = 0xBB; /* Timer 1 Interrupt Priority Bit */ sbit PS = 0xBC; /* Serial Port Interrupt Priority Bit */ sbit PT2 = 0xBD; /* Timer 2 Interrupt Priority Bit */ /*------------------------------------------------ T2CON (0xC8) Bit Registers ------------------------------------------------*/ sbit CP_RL2= 0xC8; /* 0=Reload, 1=Capture select */ sbit C_T2 = 0xC9; /* 0=Timer, 1=Counter */ sbit TR2 = 0xCA; /* 0=Stop timer, 1=Start timer */ sbit EXEN2= 0xCB; /* Timer 2 external enable */ sbit TCLK = 0xCC; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */ sbit RCLK = 0xCD; /* 0=Serial clock uses Timer 1 overflow, 1=Timer 2 */ sbit EXF2 = 0xCE; /* Timer 2 external flag */ sbit TF2 = 0xCF; /* Timer 2 overflow flag */ /*------------------------------------------------ T2MOD (0xC9) Bit Values ------------------------------------------------*/ #define DCEN_ 0x01 /* 1=Timer 2 can be configured as up/down counter */ #define T2OE_ 0x02 /* Timer 2 output enable */ /*------------------------------------------------ PSW (0xD0) Bit Registers ------------------------------------------------*/ sbit P = 0xD0; /* Parity Flag */ sbit FL = 0xD1; /* User Flag */ sbit OV = 0xD2; /* Overflow Flag */ sbit RS0 = 0xD3; /* Register Bank Select Bit 0 */ sbit RS1 = 0xD4; /* Register Bank Select Bit 1 */ sbit F0 = 0xD5; /* User Flag 0 */ sbit AC = 0xD6; /* Auxiliary Carry Flag */ sbit CY = 0xD7; /* Carry Flag */ /*------------------------------------------------ Interrupt Vectors: ------------------------------------------------*/ #define IE0_VECTOR 0 /* 0x03 External Interrupt 0 */ #define TF0_VECTOR 1 /* 0x0B Timer 0 */ #define IE1_VECTOR 2 /* 0x13 External Interrupt 1 */ #define TF1_VECTOR 3 /* 0x1B Timer 1 */ #define SIO_VECTOR 4 /* 0x23 Serial port */ #define TF2_VECTOR 5 /* 0x2B Timer 2 */ #define EX2_VECTOR 5 /* 0x2B External Interrupt 2 */ #endif |
头文件下载:
Keil uVision入门PDF文档:
声明:本文采用 BY-NC-SA 协议进行授权 | 星期九
原创文章转载请注明:转自《AT89S52.H For Keil》
AT89S52.h 
Keil入门文档
请问这个是PHP吗
@雕刻机, C语言啦。
完全不懂啊··囧··
收藏先没准哪天能用到。
@韩国,
,你肯定用不到。
牛B的技术宅~!!!
挺深奥的
看来你是走硬件方向啦
另外你的博客今晚怎么不能直接访问啦,我是翻过来的
@lazywen, 国内经常出现那种某个地方的某种网络无法访问国外站的情况,一般过段时间就又好了。
沙发又没了。
代码看不懂了。
@纯野, 是C语言哦,不过有一些Keil编译器自己的数据类型在里面。
你着越来越走向技术宅的不归路了啊~~~
@33, No,谈不上技术…… 羞啊……
Random Posts
Recent Posts
Recent Comments
By Plastic injection mould
By OOZJ
By Jusbe
By 互联网战
By 互联网战
By ixwebhosting
Blogroll
Categories
Tag Cloud
360 5800 Alexa C++ Chrome Cisco Dedecms Discuz Fcitx Fedora GFW Gravatar IE Linux Mobile ModelSim Music QT Quartus Shell Verilog VPN VPS Windows Wordpress XAMPP Xilinx xp 下载 垃圾评论 情感 手机 插件 星期九 注册 电子信息 程序设计 站长工具 缩略图 网络应用 考研 胡思乱想 西工大 视频 软件Meta