推荐阅读最新更新时间:2024-11-18 17:00
电子电路设计之C51单片机常见问题
笔者在工作中实际使用过AT89C2051、AT89C51、AT89C52等51单片机,后来应用台湾新茂、华邦等厂家的51单片机。实践中遇到许多问题,都是书本上没有的。我印象中,书本上的知识只有一页插图了,就是cpu的时序图。最初直接用汇编写程序,然后是C51嵌套汇编。编译器曾用伟福系列编译器,后来使用keil等,感觉这些编译器大同小异。需要熟练的C语言基础,加上单片机应用的特殊性。 本文就51单片机应用中一些常见问题作个总结,这都是我实际碰到过的,因为文章篇幅所限,这些问题远远不足以表达单片机的常见问题。希望对初学者有所帮助,文中不完善的地方务请指点。谢谢! 1:C51编译器如何区分位地址和字节地址 是靠预定
[单片机]
第十七课 C51结构、联合和枚举的使用
前面的文章中介绍了 C 语言的基本数据类型,为了更有效的处理更复杂的数据,C 语 言引入了构造类型的数据类型。构造类型就是将一批各种类型的数据放在一起形成一种特殊 类型的数据。之前讨论过的数组也算是一种构造类型的数据,单片机c语言 中的构造类型还有结构、 枚举和联合。 结构 结构是一种数据的集合体,它能按需要将不一样类型的变量组合在一起,整个集合体用 一个结构变量名表示,组成这个集合体的各个变量称为结构成员。理解结构的概念,能用 班级和学生的关系去理解。班级名称就相当于结构变量名,它代表所有同学的集合,而每个 同学就是这个结构中的成员。使用结构变量时,要先定义结构类型。一般定义格式如下: struct 结构名 {结构元素表};
[单片机]
KEIL / MDK生成BIN文件
使用相对路径生成,不需要任何修改 $KARMARMCCbinfromelf.exe --bin --output=@L.bin !L 编译后,Build Out框可以看到: After Build - User command #1: D:Program FilesMDK516ARMARMCCbinfromelf.exe --bin --output=test1.bin .objtest1.axf 上述操作后,在xxx.uvprojx当前目录下,可看到一个test1.bin
[单片机]
STM32 keil 下编程,各种数据类型的长度
源码: void test_str2num(void) { printf( rnrnint is %d ,sizeof(int)); printf( rnlong int is %d ,sizeof(long int)); printf( rnlong long int is %d ,sizeof(long long int)); printf( rnfloat is %d ,sizeof(float)); printf( rndouble float is %d ,sizeof(double)); printf( rnchar is %d ,sizeof(char)); printf( rnsho
[单片机]
关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
在编译下面一段代码时: STACK_TOP EQU 0x20002000 AREA Reset,CODE,READONLY DCD 0x20002000 DCD Start ENTRY ; CODE16 Start ldr r2,=Test LDRD r0,r1, LDRD r0,r1, LDRD r0,r1, ; movs r0,r0 ; NOP ; align 4 Test DCD 0x12345678 END 我发现,如果加上NOP或align4,程序就不会跑飞,否则程序就跑飞了。
[单片机]
如何创建51单片机KEIL工程步骤
1. 什么是Keil软件 Keil软件是一款专为嵌入式系统开发而设计的集成开发环境(IDE),常用于51、STM32单片机软件开发的编程软件。Keil编程软件不仅支持多种工具和扩展程序,还能够处理多种文件格式和数据交换方式;可支持单片机程序的在线仿真,或通过仿真器进行实物仿真,大大方便开发人员的工作。 其中,我们常用的Keil软件有两种,分别为Keil C51以及Keil MDK,前者主要用于51单片机等8051内核单片机的开发工具(不支持32位单片机),Keil MDK主要用于ARM架构单片机的开发工具,主要用于STM32单片机等32单片机。所以在使用Keil软件时需要主要这一点。 2.如何创建51单片机KEIL工程步骤
[单片机]
Keil 中的报警错误:WARNING L15
今天调试时遇到了这个问题,以前都不注意这些警告错误,现在看来争取要做到:0错误,0警告。 中断中和中断外都调用了同一个串口打印函数,一直有上述的报警,没在意,今天调试时发现串口打印出了一些乱七八糟的东东,且程序也不知道跑哪里去了,很郁闷。最后查到是上述这个问题导致的,现在解决办法为采用第二种办法,第一种办法据说要耗很多存储空间,以后慢慢体会。 说说几个小问题吧,一般我们在用KEIL的时候,只要编译器报 - 0 Error(s) 一般我们都不去管多少个 Warning(s).了,一般这样程序基本都能运行,但是其实仔细想想,这里还是有问题的,否则编译器没事吃饱了撑得,报什么警告啊~~~ 今天来说说*** WARNING L15:
[单片机]
【C51入门笔记】IIC总线+E2PROM芯片(24C02)
常用总线技术: 采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。 常用的串行扩展总线有: I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线及Microwire/PLUS等。 IIC总线概述: I2C总线是PHLIPS公司推出的一种串行总线,总线裁决和高低速器件同步功能的高性能串行总线 总线裁决:挂载的设备都有自己的地址,通过地址分辨设备的功能叫做总线裁决。 I2C总线通过上拉电阻(一般是10K)接正电源。当总线空闲时,两根线均为高电平。连到总线上的任一器件输
[单片机]