- 博客(97)
- 资源 (34)
- 收藏
- 关注
原创 CSR1010 CSR1011 CSR1012 CSR1013 BLE 蓝牙4.0 CSR MESH组网 RGB调光灯
蓝牙mesh组网,相对zigbee、RF等其他常见方式组网的很大优势:不需要网关,尤其适合面对普通个人用户,家庭用户;比如用户购买3个采用zigbee组网方案的灯泡,智能手机是不支持zigbee的,因此用户还需要购买一个网关设备,该设备起到TCPIP网络转zigbee信号的作用,用户通过android 或者IOS app 走TCPIP网络来连接网关设备,进而控制这3个灯泡。因此该方案,
2016-09-17 18:21:29 3594
原创 Arm Cortex-M0新唐m052外部中断
#include "register.h"int main(void){ rREGWRPROT = 0x59; //解锁 rREGWRPROT = 0x16; rREGWRPROT = 0x88; rPWRCON |= (0x1<<0); //使能晶振 while( (rCLKSTATUS & (0x1<<0)) == 0); //等待时钟稳定 rP1_PMD = 0x55
2014-02-28 21:11:15 1893
原创 51单片机启动代码:STARTUP.A51
通过Keil编译器建立工程时,Keil会提示是否添加STARTUP.A51文件到工程,该文件即为51单片机启动代码。51单片机复位后马上执行STARTUP.A51文件中的启动代码,根据启动代码中的设置依次执行以下操作:内部RAM清零外部RAM清零清零分页的外部RAM初始化SMALL内存模型的可重入模拟堆栈及其堆栈指针初始化LARGE内存模型的可重入模拟堆栈及其堆栈指针初始化COMP
2014-01-18 23:40:06 9272 1
原创 Keil C51 之LST文件
Keil C51编译器在编译程序时,会生成一个扩展名为LST的列表文件,也被称为listing file。 这个文件包含了有关编译过程的丰富信息,该文件由多个段组成,其中Symbol Listing 和 Module Information两个段对于用户分析调试程序尤其有用,下面按照各个段在 listing file中出现的先后顺序加以说明:
2014-01-11 12:30:21 9769
原创 Keil C51对C语言的关键词扩展之十八:using
在8051系列单片机中,内部ram的前32个字节被分为4组,每组8个寄存器。每组的8个寄存器名字都为R0-R7。通过设置PSW寄存器的两个位,可以选择使用4组寄存器中的哪一组。寄存器组在处理中断或者使用实时操作系统时非常有用,可以在进入中断或者切换任务时使用不同寄存器组,而不用把8个寄存器的内容保存到堆栈。在退出中断或返回原任务时,只需切换回原来的寄存器组即可。指定一个函数使用的寄存器组:
2013-12-02 22:16:34 2940
原创 Keil C51对C语言的关键词扩展之十七: sbit
sbit用来定义一个特殊功能寄存器的某一位。sbit name = sfr-name ^ bit-position;sbit name = sfr-address ^ bit-position;sbit name = sbit-address; name 特殊功能寄存器某一位的名称 sfr-name 已定义的特殊功能寄存器名称
2013-12-02 21:54:35 4058
原创 Keil C51对C语言的关键词扩展之十六:sfr16
sfr16定义一个16位的特殊功能寄存器:sfr16 name = address; name 16位特殊功能寄存器名称 address 16位特殊功能寄存器地址一些8051系列产品拥有16位的特殊功能寄存器,比如8052使用地址0XCC、0XCD表示定时/计数器2的低字节、高字节。C51编译器提供sfr16数据
2013-12-02 21:23:44 3216
原创 Keil C51对C语言的关键词扩展之十五: reentrant
reentrant声明的函数为可重入函数。可重入的函数能够被多个进程同时调用。可重入函数在执行时,另外的进程可以中断当前执行的函数,并且调用同一个函数。正常情况下,C51程序中的函数不能被递归地调用,这是由于函数的参数和局部变量都被保存在固定的地址,在递归调用时操作了相同存储位置,导致数据被覆盖。使用reentrant声明函数为可递归调用的可重入函数:int calc (char i,
2013-12-02 20:56:06 5473
原创 Keil C51对C语言的关键词扩展之十四: interrupt
8051/8052系列单片机标准向量表:中断号 描述 地址 0外部中断0 0003h1定时/计数器0 000Bh2外部中断1 0013h3定时计数器1 001Bh4串口 0023h5定时计数器2(8052)
2013-12-01 21:21:47 3855
原创 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 3738
原创 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 1969
原创 Keil C51对C语言的关键词扩展之十一: xdata
xdata声明的变量位于外部ram 64KB地址范围内某一位置。程序示例:unsigned int xdata m=0; /* 声明一个全局变量,可位于外部ram 64KB地址范围内任意位置,由编译器决定 */int main(void){......}
2013-11-29 21:33:57 2338
原创 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 2379
原创 Keil C51对C语言的关键词扩展之九: idata
idata声明的变量存储在内部ram 256字节范围内。data声明的变量存储在内部ram低128字节范围内。
2013-11-29 21:15:07 2027
原创 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 3095
原创 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 1869
原创 Keil C51内存模型
Keil C51编译器提供三种类型的内存模型:small,compact,large。内存模型决定了函数参数、自动变量以及未显式声明存储类型情况下的默认存储类型。三种内存模型的默认存储区域:内存模型参数 &自动变量全局变量常量指针定义指针所占内存SMALLdatadatadata*3 字节COM
2013-11-29 19:40:55 1759
原创 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 1996
原创 Keil C51对C语言的关键词扩展之五: code
code 指定存储位置位于程序存储器。程序存储器只读,因此code类型的变量,是无法再次赋值的。unsigned char code ary[ ] = :"Read only"; /* 数组ary位于程序存储器 */ary[0]='a'; /* 错误,不可修改*/
2013-11-29 19:12:23 2217
原创 Keil C51对C语言的关键词扩展之四: bit
bit关键词可定义位变量,可用于函数参数、返回值类型。static bit done_flag = 0; /* 位变量*/bit testfunc ( /* 返回值类型为位变量 */ bit flag1, /* 参数类型为位变量 */ bit flag2){...return (0);
2013-11-29 18:54:46 4262
原创 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 7029 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 2633 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 10606
原创 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 1968
原创 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 2495
原创 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 3145
原创 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 4999 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 13922
原创 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 5921 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 2311
原创 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 2960
原创 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 1693
原创 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 5251
原创 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 3223 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 5397
原创 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 2537
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关注的人