推荐阅读最新更新时间:2024-11-06 14:41
C51单片机设计模拟I2C总线驱动程序
/********************************** I2C总线驱动 ************************************* 模块名:I2C总线驱动 型号:I2C 功能描述: 此模块包括发送数据及接收数据,应答位发送,并提供了几个直接面对器件的操作函数,能很 方便的与用户程序进行连接并扩展。 需要注意的是,函数是采用延时方法产生 SCL 脉冲,对高晶振频率要做一定的修改!! 在写E2PROM的时候一定要延时!!! 说明: 1us机器周期,晶振频率要小于12MHz 返回 1 则操作成功,返回 0 则操作失败。 sla 为器件从地址,suba 为器件子地址。 **
[单片机]
DS18B20单片机C51温度计实践
18B20温度计,正负温度显示。最大99摄氏度。用万能板手工焊接。调试成功,正常显示。共阳数码管由三极管驱动。 下面是C51程序,您一看就懂了: #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar code table ={ 0x14,0xf5,0x19,0x51, //0 1 2 3 0xf0,0x52,0x12,0x75, // 4 5 6 7 0x10,0x50,0x30,0x92, // 8 9 a b 0x1e,0x
[单片机]
C51单片机与C52单片机内部的资源区别
C52单片机可以理解为是C51单片机的增强版 • 两个方面有差异,存储空间和定时器计数器方面有区别 ○ C52单片机的内部ROM为8KB;C51单片机的内部ROM为4KB ○ C52单片机的内部RAM为256B;C51单片机的内部ROM为128B • C52单片机相比C51单片机多了一个定时计数器T2
[单片机]
ASM5无参数化调用C51函数的实现
摘要: 利用汇编模块对C51模块进行无参数化调用,从根本上避开了传统汇编模块和C51模块之间调用时的繁琐接口编程问题,并以实例验证了该方法的优越性和有效性。 关键词: ASM51汇编语言 C51语言 无参数化调用 MCS-51系列单片机在目前和今后的相当一段时间内都将是我国的单片机主流机种。但在早期的开发过程中,程序员不得不从深奥的汇编语言开始摸索,同时要求开发人员对硬件亦有相当的子解。相比而言,专用8051系列单片机设计的Franklin C51语言是一种通用的高级结构化的程序设计
[工业控制]
一种基于C51的多任务机制及应用
引言 传统的单片机程序一般采用单任务机制,单任务系统具有简单直观、易于控制的优点。然而由于程序只能按顺序依次执行,缺乏灵活性,只能使用中断函数实时地处理一些较短的任务,在较复杂的应用中使用极为不便。嵌入式多任务操作系统的出现解决了这个问题。在多任务系统中,可以同时执行多个并行任务,任务之间可以相互跳转。但是嵌入式操作系统在提供强大功能的同时,也带来了代码量大、结构复杂、对硬件要求较高、开发难度大且成本高等问题。而很多时候只需要实现简单的多任务操作就可以满足实际需要,本文设计的这种简单的多任务机制,在只增加极少量C语言代码的前提下,不需使用汇编,无需对原本的程序进行大改动,就可以实现多任务操作。 实时操作系统RTOS的核心
[单片机]
Keil C51 之LST文件,类似MDK.map文件
展开 Keil C51编译器在编译程序时,会生成一个扩展名为LST的列表文件,也被称为listing file。 这个文件包含了有关编译过程的丰富信息,该文件由多个段组成,其中Symbol Listing 和 Module Information两个段对于用户分析调试程序尤其有用,下面按照各个段在 listing file中出现的先后顺序加以说明: 一、页头段(Page Header) 每个lst文件都有一个包含了编译器版本号、源文件名称、日期、时间、页号的头部。示例: C51 COMPILER V7.20 MEASURE 10/01/2004 14:05:05 PAGE 1 二、命令段
[单片机]
C51指针定义和应用小结
一. 指针变量的定义 指针变量定义与一般变量的定义类似,其形式如下: 数据类型 * 标识符; 表示被定义为基于存储器的指针,无此选项时,被定义为一般指针。这两种指针的区别在于它们的存储字节不同。一般指针在内存中占用三个字节,第一个字节存放该指针存储器类型的编码(由编译时由编译模式的默认值确定),第二和第三字节分别存放该指针的高位和低位地址偏移量。存储器类型的编码值如下: 存储类型I Idata/data/bdata xdata pdata Code 编码值 0x00 0x01 0xFE 0xFF 用于指定指针本身的存储器空间。 char * c_ptr; int * i_ptr; lon
[单片机]
C51单片机的精准延时程序(Timer)
使用定时器 / 计数器实现精确延时 单片机系统一般常选用 11.059 2 MHz 、 12 MHz 或 6 MHz 晶振。第一种更容易产生各种标准的波特率, 后两种的一个机器周期分别为 1 μ s 和 2 μ s ,便于精确延时。本程序中假设使用频率为 12 MHz 的晶振。 最 长的延时时间可达 216=65 536 μ s 。若定时器工作在方式 2 ,则可实现极短时间的精确延时;如使用其他 定时方式,则要考虑重装定时初值的时间(重装定时器初值占用 2 个机器周期)。 在实际应用中,定时常采用中断方式,如进行适当的循环可实现几秒甚至更长时间的延时。使用定时 器 / 计数器延时从程序的执行效率和稳定性两方面考虑都是最佳的方案。但
[单片机]