- 博客(37)
- 资源 (34)
- 收藏
- 关注
原创 Keil C51对C语言的关键词扩展之十三: sfr
sfr用来定义特殊功能寄存器。用法如下:sfr name = address;name 为寄存器名字address 为寄存器的地址示例:sfr P0 = 0x80; /* P0口,地址为0x80 */sfr P1 = 0x90; /* P1口,地址为0x90 */sfr P2 = 0xA0; /* P2口,地址为0xa0 */sfr P3 =
2013-11-29 22:10:26 3668
原创 Keil C51对C语言的关键词扩展之十二: _priority_ 以及 _task_
Keil 51编译器支持 RTX51 Full 和 RTX51 Tiny 实时多任务操作系统,并为其提供了_task_关键词以及_priority_关键词。_task_关键词指示一个函数为实时任务。_priority_关键词指示任务优先级。示例:void func (void) _task_ num _priority_ prinum为任务ID,在RTX51 Full中取
2013-11-29 21:44:05 1931
原创 Keil C51对C语言的关键词扩展之十一: xdata
xdata声明的变量位于外部ram 64KB地址范围内某一位置。程序示例:unsigned int xdata m=0; /* 声明一个全局变量,可位于外部ram 64KB地址范围内任意位置,由编译器决定 */int main(void){......}
2013-11-29 21:33:57 2307
原创 Keil C51对C语言的关键词扩展之十: pdata
外部ram通过一个地址指针寄存器来间接访问,读写效率要低于内部ram。外部ram容量最大可位64KB。Keil C51提供两种外部数据存储方式,pdata和xdata。1)xdata存储类型,指示变量可存储在外部ram 64KB地址范围内任意位置。large内存模型下,变量即为此种默认存储类型。2)pdata存储类型,指示变量可存储在外部ram 256字节页范围内任意位置。comp
2013-11-29 21:26:03 2339
原创 Keil C51对C语言的关键词扩展之九: idata
idata声明的变量存储在内部ram 256字节范围内。data声明的变量存储在内部ram低128字节范围内。
2013-11-29 21:15:07 2004
原创 Keil C51对C语言的关键词扩展之八: far
far的出现,是Keil 编译器为了支持新出现的8051家族增强型MCU,这些增强型MCU可能拥有大于64KB的存储器。使用far可访问扩展的RAM,使用const far可访问扩展的ROM。NXP 51MX架构51单片机提供通过通用指针访问多大8MB的code和xdata存储空间。Dallas 390架构的51单片机通过24位的DPTR寄存器结合传统MOVX 、MOVC指令来访问扩展的RAM
2013-11-29 21:11:14 3065
原创 Keil C51对C语言的关键词扩展之七: data
8051单片机内部256字节RAM,低128字节既可直接寻址,又可间接寻址,高128字节RAM只能间接寻址(直接寻址方式下,高128字节被映射到SFR特殊功能寄存器)。内部RAM中包含16字节可位寻址区域,该区域起始地址为20H。内部RAM存储区被分为三种不同的存储区类型:data,idata,bdata。1)data指低128字节,以直接寻址方式访问存在该区域的变量。2)idata指
2013-11-29 20:54:07 1820
原创 Keil C51内存模型
Keil C51编译器提供三种类型的内存模型:small,compact,large。内存模型决定了函数参数、自动变量以及未显式声明存储类型情况下的默认存储类型。三种内存模型的默认存储区域:内存模型参数 &自动变量全局变量常量指针定义指针所占内存SMALLdatadatadata*3 字节COM
2013-11-29 19:40:55 1727
原创 Keil C51对C语言的关键词扩展之六: compact
函数的参数和局部变量存储在内存模型指定的默认区域内。我们可以通过small,compact 或large 指定一个函数使用何种内存模型。#pragma small /* 默认内存模型为small*/extern int calc (char i, int b) large reentrant;extern int func (int i, float f) lar
2013-11-29 19:23:40 1968
原创 Keil C51对C语言的关键词扩展之五: code
code 指定存储位置位于程序存储器。程序存储器只读,因此code类型的变量,是无法再次赋值的。unsigned char code ary[ ] = :"Read only"; /* 数组ary位于程序存储器 */ary[0]='a'; /* 错误,不可修改*/
2013-11-29 19:12:23 2173
原创 Keil C51对C语言的关键词扩展之四: bit
bit关键词可定义位变量,可用于函数参数、返回值类型。static bit done_flag = 0; /* 位变量*/bit testfunc ( /* 返回值类型为位变量 */ bit flag1, /* 参数类型为位变量 */ bit flag2){...return (0);
2013-11-29 18:54:46 4170
原创 Keil C51对C语言的关键词扩展之三: bdata
使用bdata定义的变量即可字寻址,也可比特位寻址。Keil C51编译器把使用bdata定义的变量放置在8051内部RAM可位寻址区。bdata定义的变量必须为全局变量,不能在任一函数内部定义bdata类型的变量。bdata关键词使用方法:int bdata x1; /* */char bdata bary [4]; /* Bit-addressab
2013-11-28 23:09:51 6942 1
原创 Keil C51对C语言的关键词扩展之二: alien
alien关键词主要是为了C51编译器与PL/M-51编译器兼容。在C51编译器中调用PL/M-51函数,须使用alien声明该函数,如下:extern alien char plm_func (int, char);char c_func (void) { int i; char c; for (i = 0; i < 100; i++) { c = plm
2013-11-28 22:35:32 2595 1
原创 Keil C51对C语言的关键词扩展之一: _at_
_at_关键词用于在定义变量时指定变量所在地址。_at_关键词使用示例如下:struct link { struct link idata *next; char code *test; };struct link list idata _at_ 0x40; /* 定义位于内部RAM低128字节区0x40地址处的 结构体 */char xdata text
2013-11-28 22:17:46 10420
原创 Keil C51对C语言的关键词扩展
为了支持8051系列单片机特性,Keil Cx51编译器为C语言扩展了众多关键词:_at_ far sbitalien idata sfrbdata interrupt sfr16bit large smallcode pdata taskcompact priority usingdata reentrant xdata用户可以使用NO
2013-11-28 22:02:04 1952
原创 51单片机STC89C52 红外解码
/**********************************For:Car mp3 IrControler**Author:YWZ**Date:2013/10/16********************************/#include "reg52.h"typedef unsigned char U8; typedef unsigned int
2013-11-12 22:20:15 2477
原创 51单片机STC89C52 iic
SCL BIT P2.1 SDA BIT P2.0ORG 0000HLJMP MAINORG 0050HMAIN:MOV SP,#30HMOV P1,#0FFH ;灭LEDMOV R6,#2 ;R6保存AT24C02内部待写地址,用于传递参数MOV R7,#55H ;R7保存待写数据,用于传递参数LCALL iic_Write ;调用写函数,将R7的数据写入
2013-11-11 23:01:38 3129
原创 51单片机STC89C52 矩阵键盘数码管显示
WELA BIT P2.7DULA BIT P2.6DIOLA BIT P2.5FM BIT P2.3ORG 0000HSETB DIOLAMOV SP,#0E0HLOOP0:LCALL key_ScanJZ LOOP0LCALL DELAY20MSLCALL key_ScanJZ LOOP0MOV P1,ALCALL SmgHERE
2013-11-11 23:00:14 4904 2
原创 51单片机STC89C52 AD模数转换
CSDA BIT P3.2WRR BIT P3.6RDD BIT P3.7WELA BIT P2.7DULA BIT P2.6CSAD BIT P0.7DIOLA BIT P2.5ORG 0000HLOOP0:MOV P0,#0FFH ;关数码管显示SETB WELASETB RDDSETB WRRSTARTAD: ;开始转换CLR CS
2013-11-11 22:59:20 13884
原创 51单片机STC89C52 DA数模转换
CSDA BIT P3.2WRR BIT P3.6WELA BIT P2.7DULA BIT P2.6ORG 0000HLOOP0:MOV P0,#0FFH ;关数码管显示SETB WELACLR WELACLR DULASETB CSDASETB WRMOV A,#0LOOP1:MOV P0,ACLR CSDA CLR WRR
2013-11-11 22:59:02 5901 1
原创 51单片机STC89C52 继电器
RELAY BIT P1.0ORG 0000HLOOP0:SETB RELAYLCALL DELAYCLR RELAYLCALL DELAYSJMP LOOP0DELAY: ;延时1SSETB RS1MOV R2,#04HDELAY2:MOV R1,#150DELAY1:MOV R0,#250DELAY0:NOPNOP
2013-11-11 22:58:13 2298
原创 51单片机STC89C52 数码管动态
DULA BIT P2.6WELA BIT P2.7ORG 0000HMOV P0,#0 ;关显示SETB DULACLR DULALOOP0:MOV R0,#0LOOP1:MOV DPTR,#TABLEWMOV P0,#0 ;关显示SETB DULACLR DULAMOV A,R0MOVC A,@A+DPTRMOV P0,A ;送
2013-11-11 22:57:29 2915
原创 51单片机STC89C52 数码管静态
DULA BIT P2.6WELA BIT P2.7ORG 0000HCLR DULACLR WELAMOV P0,#0SETB DULACLR DULAMOV P0,#0SETB WELACLR WELALOOP0:MOV R0,#0MOV DPTR,#TABLEKLOOP1:MOV P0,#0SETB DULACLR DU
2013-11-11 22:56:42 1672
原创 51单片机STC89C52 串口接收(中断)
ORG 0000HLJMP MAINORG 0023HLJMP UARTISR ;串口中断服务函数 MAIN:MOV TMOD,#20H ;定时器1工作方式2MOV TH1,#0FDH ;9600BPSMOV TL1,#0FDHMOV SCON,#50H ;8位数据,波特率可变,允许接收ANL PCON,#7FH ;SMOD=0SETB TR1CLR R
2013-11-11 22:55:52 5233
原创 51单片机STC89C52 串口接收(查询)
ORG 0000HLJMP MAIN MAIN:MOV SCON,#50HANL PCON,#7FH ;SMOD=0MOV TMOD,#20HMOV TH1,#0FDH ;9600BPSMOV TL1,#0FDHSETB TR1HERE1:JNB RI,HERE1MOV A,SBUFCLR RIMOV SBUF,ASJMP HERE1EN
2013-11-11 22:55:05 3205 1
原创 51单片机STC89C52 串口发送字符串
BEEP BIT P2.3LCDEN BIT P3.4LED BIT P1.0ORG 0000HLJMP MAIN MAIN:MOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHSETB TR1MOV SCON,#40HANL PCON,#7FHMOV DPTR,#TABLEHERE1:MOV R1,#00H
2013-11-11 22:54:19 5340
原创 51单片机STC89C52 串口发送字符
BEEP BIT P2.3LCDEN BIT P3.4LED BIT P1.0ORG 0000HLJMP MAIN MAIN:MOV TMOD,#20HMOV TH1,#0FDHMOV TL1,#0FDHSETB TR1MOV SCON,#40HANL PCON,#7FHHERE:CPL BEEPCPL LEDMOV SBUF,#32
2013-11-11 22:53:35 2497
原创 51单片机STC89C52 外部中断
BEEP BIT P2.3LCDEN BIT P3.4LED BIT P1.0ORG 0000HLJMP MAINORG 0003HLJMP EX0ISR ORG 0020HMAIN:CLR LCDENSETB IT0SETB EX0SETB EAHERE:SJMP HEREEX0ISR:CPL BEEPCPL LEDRE
2013-11-11 22:52:24 3957 1
原创 51单片机STC89C52 定时器(中断方式)
BEEP BIT P2.3HVAL EQU 03CH LVAL EQU 0B0HORG 0000HLJMP MAINORG 000BHLJMP T0ISR ORG 0020HMAIN:MOV A,#00HMOV 89H,#01H ;TMOD,定时器0工作方式1 LOAD0:MOV 8CH,#HVAL ;TH0 MOV 8A
2013-11-11 22:50:40 4634
原创 51单片机STC89C52 定时器(查询方式)
BEEP BIT P2.3HVAL EQU 03CH LVAL EQU 0B0HORG 0030HMOV 89H,#01H ;TMOD,定时器0工作方式1 LOAD0:MOV 8CH,#HVAL ;TH0 MOV 8AH,#LVAL ;TL0 SETB TR0HERE0:JBC TF0,DONE0SJMP HERE0
2013-11-11 22:49:36 3123
原创 51单片机STC89C52 蜂鸣器
BEEP BIT P2.3ORG 0000HLOOP0:CPL BEEPLCALL DELAYSJMP LOOP0DELAY:SETB RS1MOV R2,#04HDELAY2:MOV R1,#150DELAY1:MOV R0,#250DELAY0:NOPNOP DJNZ R0,DELAY0DJNZ R1,DELAY1DJNZ
2013-11-11 22:48:47 4221
原创 51单片机STC89C52 按键控制蜂鸣器
KEY1 BIT P3.4KEY2 BIT P3.5KEY3 BIT P3.6KEY4 BIT P3.7LED1 BIT P1.0LED2 BIT P1.1LED3 BIT P1.2LED4 BIT P1.3LED5 BIT P1.4LED6 BIT P1.5LED7 BIT P1.6LED8 BIT P1.7BEEP BIT P2.3ORG
2013-11-11 22:47:36 11154
原创 51单片机STC89C52 4个独立按键的检测
KEY1 BIT P3.4KEY2 BIT P3.5KEY3 BIT P3.6KEY4 BIT P3.7LED1 BIT P1.0LED2 BIT P1.1LED3 BIT P1.2LED4 BIT P1.3LED5 BIT P1.4LED6 BIT P1.5LED7 BIT P1.6LED8 BIT P1.7ORG 0000HLOOP0:
2013-11-11 22:46:44 6239
原创 51单片机STC89C52 独立按键检测
KEY1 BIT P3.4LED1 BIT P1.0LED2 BIT P1.1ORG 0000HLOOP:SETB KEY1JNB KEY1,KEY1DOWN0SJMP LOOPKEY1DOWN0:LCALL DELAYJNB KEY1,KEY1DOWN1AJMP LOOPKEY1DOWN1:CPL LED1CPL LED2J
2013-11-11 22:45:34 3481
原创 51单片机STC89C52 流水灯
ORG 0000HLOOP:MOV A,#0FEHLOOP0:MOV P1,AACALL DELAYRL ASJMP LOOP0DELAY:SETB RS1MOV R2,#04HDELAY2:MOV R1,#250DELAY1:MOV R0,#250DELAY0:NOPNOP DJNZ R0,DELAY0DJNZ R1
2013-11-11 22:44:26 3113
原创 51单片机STC89C52 LED闪烁
org 0000HLOOP:CLR P1.0ACALL DELAYSETB P1.0ACALL DELAYSJMP LOOPDELAY:SETB RS1MOV R2,#04HDELAY2:MOV R1,#250DELAY1:MOV R0,#250DELAY0:NOPNOP DJNZ R0,DELAY0DJNZ R1,DEL
2013-11-11 22:43:16 2411
51单片机AT89C52数字温度传感器DS18B20 proteus仿真
2013-09-19
基于状态机的51单片机AT89C52独立按键的检测proteus仿真
2013-09-19
51单片机AT89C52数码管电子钟proteus仿真实验
2013-09-19
对拉氏变换、傅里叶变换等不同变换的联系的总结
2010-01-11
微波技术与天线习题答案
2010-01-11
英语电子专业词典-词汇量大,文字清晰,理工科学生必备
2009-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人