51单片机

阅读 / 问答 / 标签

51单片机汇编 警告 WARNING L5: CODE SPACE MEMORY OVERLAP 求解答

BL51:警告5(代码空间存储器重叠)本文中的信息适用于:C51所有版本症状链接程序时,链接器会响应以下警告:警告L5:代码空间存储器重叠原因此警告是由一个或多个重叠的代码段(驻留在同一地址)引起的。您收到的警告消息应指出发生重叠的地址范围。这些段通常是绝对的(中断服务程序或位于固定地址的缓冲区)。一个常见原因是使用相同的中断向量声明的两个中断例程。例如:void ISR1(void)中断0{}和void ISR2(void)中断0{}请注意,中断函数名称不同,但中断向量是相同的。复制中断例程但未更改向量时,通常会发生这种情况。解析度解决这个问题通常很容易。首先,检查链接器MAP文件以查找代码存储器链接映射。模块链接图:测试(MAIN)型号基础长度重新定位分段名称-------------------------------------------------- ---。。。* * * * * * * CODEMEMORY * * * * * * *代码0000H 0003H ABSOLUTECODE 0003H 000CH UNIT?C_C51STARTUPCODE 000FH 0001H UNIT?PR?MAIN?MAINCODE 0010H 0014H ABSOLUTE* OVERLAP * CODE 001BH 0003H ABSOLUTECODE 0024H 0001H UNIT?PR?ISR?MAIN从这里,您可以找到所有重叠的段。只需在地图文件的链接地图部分中搜索OVERLAP即可。在这种情况下,它看起来是10h-23h(14h字节长)的绝对段,而1Bh-1Dh(3h字节长)的另一个绝对段彼此重叠。从地址0000h开始的3字节长的绝对段是复位向量。从地址0003h,000Bh,0013h,001Bh等开始的3个字节长的绝对段是中断向量。这些指向中断函数(通常用C编写)。在这种情况下,地址001Bh处的绝对段是中断3的中断向量。接下来,通过检查符号表(来自链接器MAP文件)确定绝对地址的来源。例如:符号表模块:测试(MAIN)VALUE TYPE NAME----------------------------------------- MODULE MAINC:0000H SYMBOL _ICE_DUMMY_C:000FH PUBLIC主要C:0010H PUBLIC bufC:0024H PUBLIC ISR------- PROC MAINC:000FH LINE#3C:000FH LINE#4C:000FH LINE#5------- ENDPROC MAIN在这里,你可以看到,0010H是buf绝对从主模块(main.c中)和0024H是ISR。如果您查看MAIN源文件,您将看到问题:int code buf [10] _at_ 0x10;void main(void){}void ISR(void)中断3{}在这种情况下,buf存储在地址0x10-0x23,ISR向量存储在地址0x1B-0x1D。而且,这是重叠的记忆。

stc15w408as和普通的80c51单片机的区别?

stc15单片机属于增强型1T单片机,运行速度比普通单片机快很多,它内部集成了高精度RC时钟可以免去外部晶振,也无需外接硬件复位电路,具体差别可以到官网下载它的数据手册查阅。

stc89c52和51单片机有什么不同呢?

一、STC89C52详细介绍STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。二、STC89C52与51的区别1、电压不同,STC89C51电压为4.5V-5.5V,STC89LE52的电压为2.0V-3.8V;2、内部程序存储器不同,一个是FLASH,可以ISP,一个是EPROM,只能通过编程器烧录STC89c51/52的存储器不一样,51有4K,52有8K;3、52还多了一个定时器,所以可以说52是51(这个51是指stc89c51,不是51内核)的增强型;三、STC系列单片机特点STC单片机是宏晶生产的单时钟/机器周期的单片机,STC单片机是51与AVR的结合体,AVR单片机在位控制和C语言写法上存在很大的差异。而STC单片机洽洽结合了51和AVR的优点,虽然功能不及AVR那么强大,但是在AVR能找到的功能,在STC上基本都有。同时STC单片机是51内核,这给以51单片机为基础的工程师们提供了极大的方便,省去了学习AVR的时间,同时也不失AVR的各种功能。STC单片机是高速、低功耗、超强抗干扰的新一代8051单片机51单片机,指令代码完全兼容传统8051,但速度快8~12倍,内部集成MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机电机 的供应商控制,强干扰场合,成为继51单片机后一个全新系列单片机。STC单片机特性:1、下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最著名的要属于杜老师的那个视频了,好多对单片机有兴趣的朋友都是通过这个视频入门的,同时具有宽电压:5.5~3.8V,2.4~3.8V, 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)。2、STC单片机具有在应用编程,调试起来比较方便;带有10位AD、内部EEPROM、可在1T/机器周期下工作,速度是传统51单片机的8~12倍,价格也较便宜。3、4通道捕获/比较单元,STC12C2052AD系列为2通道,也可用来再实现4个定时器或4个外部中断,2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器,具有硬件看门狗、高速SPI通信端口、全双工异步串行口,兼容普通8051的串口,同时还具有先进的指令集结构,兼容普通8051指令集。扩展资料:STC89C52标准功能具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。参考资料:百度百科-STC89C52

51单片机stc8f181s2怎么看程序

stc8f1k08s2是一款51系列的单片机,它的程序存储在内部闪存中。要读取单片机内部程序,需要使用专门的编程器或者下载器。下面介绍两种常见的读取单片机程序的方法1.使用专门的编程器读取程序STC公司提供了一款名为STC-ISP的编程软件,可以通过USB转串口线将编程器与单片机连接,实现对单片机程序的编程、擦除和读取等操作。使用STC-ISP可以读取单片机内部程序,具体步骤如下:1连接编程器和单片机,打开STC-ISP软件2选择单片机型号和串口号。3点击“读出”按钮,可以将单片机内部程序读取出来。注意,使用STC-ISP软件读取单片机程序需要先将单片机上电,否则读取不到程序2.使用仿真器或者调试器读取程序STC8F1K08S2单片机支持仿真器或者调试器功能,可以将单片机与PC机连接,通过仿真或者调试的方式读取程序。比如STC公司提供了一款名为STC-Debugger的软件,可以通过USB线将单片机和PC机连接,实现单步调试、观察变量和读取程序等功能。使用STC-Debugger可以读取单片机内部程序,具体步骤如下:(1) 连接单片机和PC机,打开STC-Debugger软件。(2)选择单片机型号和仿真器类型3)点击“读程序”按钮,可以将单片机内部程序读取出来。注意:使用仿真器或者调试器读取单片机程序需要先连接好硬件设备,并设置好仿真器或者调试器的参数,如波特率、数据位、停止位等总之,要读取STC8F1K08S2单片机内部程序,可以使用专门的编程器或者仿真器/调试器等工具具体操作步骤需要根据不同的工具和环境来确定。

stc单片机和51单片机的区别有哪些?

一、STC89C52详细介绍STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。二、STC89C52与51的区别1、电压不同,STC89C51电压为4.5V-5.5V,STC89LE52的电压为2.0V-3.8V;2、内部程序存储器不同,一个是FLASH,可以ISP,一个是EPROM,只能通过编程器烧录STC89c51/52的存储器不一样,51有4K,52有8K;3、52还多了一个定时器,所以可以说52是51(这个51是指stc89c51,不是51内核)的增强型;三、STC系列单片机特点STC单片机是宏晶生产的单时钟/机器周期的单片机,STC单片机是51与AVR的结合体,AVR单片机在位控制和C语言写法上存在很大的差异。而STC单片机洽洽结合了51和AVR的优点,虽然功能不及AVR那么强大,但是在AVR能找到的功能,在STC上基本都有。同时STC单片机是51内核,这给以51单片机为基础的工程师们提供了极大的方便,省去了学习AVR的时间,同时也不失AVR的各种功能。STC单片机是高速、低功耗、超强抗干扰的新一代8051单片机51单片机,指令代码完全兼容传统8051,但速度快8~12倍,内部集成MAX810专用复位电路。4路PWM 8路高速10位A、D转换,针对电机电机 的供应商控制,强干扰场合,成为继51单片机后一个全新系列单片机。STC单片机特性:1、下载烧录程序用串口方便好用,容易上手,拥有大量的学习资料及视频,最著名的要属于杜老师的那个视频了,好多对单片机有兴趣的朋友都是通过这个视频入门的,同时具有宽电压:5.5~3.8V,2.4~3.8V, 低功耗设计:空闲模式,掉电模式(可由外部中断唤醒)。2、STC单片机具有在应用编程,调试起来比较方便;带有10位AD、内部EEPROM、可在1T/机器周期下工作,速度是传统51单片机的8~12倍,价格也较便宜。3、4通道捕获/比较单元,STC12C2052AD系列为2通道,也可用来再实现4个定时器或4个外部中断,2个硬件16位定时器,兼容普通8051的定时器。4路PCA还可再实现4个定时器,具有硬件看门狗、高速SPI通信端口、全双工异步串行口,兼容普通8051的串口,同时还具有先进的指令集结构,兼容普通8051指令集。扩展资料:STC89C52标准功能具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。参考资料:百度百科-STC89C52

stc52与51单片机有什么区别?

与51的主要区别是:51只有4K程序存储空间,52有8K51只有128字节数据存储空间,52有256个51只有2个定时器,52有3个。STC单片机是以51内核为主的系列单片机,STC单片机是宏晶生产的单时钟/机器周期的单片机,是高速、低功耗、超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8—12倍,内部集成MAX810专用复位电路。扩展资料:STC89C52RC是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有8K字节系统可编程Flash存储器。STC89C52使用经典的MCS-51内核,但是做了很多的改进使得芯片具有传统51单片机不具备的功能。具有以下标准功能: 8k字节Flash,512字节RAM, 32 位I/O 口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16 位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外 STC89C52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。

51单片机怎么同时控制多个bmp180传感器?

如果你只有一个51单片机,想同时控制多个bmp180传感器,可以使用I2C总线多路复用器,例如TCA9548A。这个芯片可以控制多个I2C设备的访问,允许你同时连接多个bmp180传感器到单个I2C总线上。使用TCA9548A多路复用器,你需要将SCL和SDA信号线连接到TCA9548A的输入端口,并将TCA9548A的多个输出端口连接到不同的bmp180传感器。然后,在你的代码中使用TCA9548A的地址来选择要访问的传感器。具体而言,你需要在代码中使用TCA9548A的I2C地址来选择TCA9548A的输出端口,然后使用相应的从机地址来读取或写入相应的传感器。需要注意的是,每个bmp180传感器都应该具有唯一的从机地址,否则你将无法区分不同的传感器。如果你的传感器没有可编程的地址,那么你只能使用物理上独立的I2C总线来控制多个传感器。

51单片机的复位电路为什么要电阻啊?

不要也可以.电阻起什么作用?要看你选的复位电路了,复位电路有很多种的.

关于51单片机复位电路中的按键复位

没电阻电容就悲剧了 呵呵

51单片机电源模块如何实现稳定可靠的供电?

电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

51单片机我用按键复位和重新上电复位得到的结果不一样是怎么回事

初始化的问题在上电复位的时候 寄存器被初始化但是在按键复位的时候 有一部分寄存器初始化,还有一些没有被初始化,如IO等 这些是根据你当时的运行情况来的 所以 在做单片机设计的时候,最好了解一下所有寄存器 在各种不同复位状态下的 状态 然后软件初始化 就不会发生上面的问题了

51单片机有哪些功能?

电源模块的稳定可靠是系统平稳运行的前提和基础。51单片机虽然使用时间最早、应用范围最广,但是在实际使用过程中,一个和典型的问题就是相比其他系列的单片机,51单片机更容易受到干扰而出现程序跑飞的现象,克服这种现象出现的一个重要手段就是为单片机系统配置一个稳定可靠的电源供电模块。此最小系统中的电源供电模块的电源可以通过计算机的USB口供给,也可使用外部稳定的5V电源供电模块供给。单片机的置位和复位,都是为了把电路初始化到一个确定的状态,一般来说,单片机复位电路作用是把一个例如状态机初始化到空状态,而在单片机内部,复位的时候单片机是把一些寄存器以及存储设备装入厂商预设的一个值。单片机复位电路原理是在单片机的复位引脚RST上外接电阻和电容,实现上电复位。当复位电平持续两个机器周期以上时复位有效。复位电平的持续时间必须大于单片机的两个机器周期。具体数值可以由RC电路计算出时间常数。复位电路由按键复位和上电复位两部分组成。单片机系统里都有晶振,在单片机系统里晶振作用非常大,全程叫晶体振荡器,他结合单片机内部电路产生单片机所需的时钟频率,单片机晶振提供的时钟频率越高,那么单片机运行速度就越快,单片接的一切指令的执行都是建立在单片机晶振提供的时钟频率。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。

51单片机的复位电路由哪些原件构成 其作用各是什么 复位电路有哪些类型

uff1duff1d

51单片机“上电/按键复位电路”的原理及其电容C的作用???

  51单片机复位电路工作原理  在单片机系统中,系统上电启动的时候复位一次,当按键按下的时候系统再次复位,如果释放后再按下,系统还会复位。所以可以通过按键的断开和闭合在运行的系统中控制其复位。  也就是说在电脑启动的0.1S内,电容两端的电压时在0~3.5V增加。这个时候10K电阻两端的电压为从5~1.5V减少(串联电路各处电压之和为总电压)。所以在0.1S内,RST引脚所接收到的电压是5V~1.5V。在5V正常工作的51单片机中小于1.5V的电压信号为低电平信号,而大于1.5V的电压信号为高电平信号。所以在开机0.1S内,单片机系统自动复位(RST引脚接收到的高电平信号时间为0.1S左右)。  电容C的作用:并联到晶振两侧,是帮助晶振起振的

求解这个51单片机复位电路的原理?

电阻是下拉,确保没有动作时RST引脚是低电平。如果没有这个电阻,RST引脚电平是不确定的,受电磁干扰或工作一段时间后电荷积聚都有可能引起电平变化,这个时候系统就会无缘无故复位了。至于阻值,只要能确保电平被拉低就可以了,要求不是很严格,如果不需要硬件复位功能,直接接地理论上也是可以的。你这里用到复位开关,电阻太小的话,流经电阻的电流大,所以不能太小。电容是滤波,并给系统一个有效的复位脉冲。你这个图里,按键按下然后放开之后,RST引脚电平并不是立马变为低电平的,而是要等电容充电,充满点之后,RST引脚才是低电平。取值根据你需要的复位脉冲宽度决定。

加在c51单片机上的复位电路通过高电平还是低电平复位,原理是什么

51是高电平复位。当上电一瞬间,电容需要充电,认为电流可以流过电容,所以电容相当于短路,这是复位脚相当于接入高电平,进入上电复位状态。当电容电量充满以后,电容不再有电流流过,相当于短路,这时复位脚就相当于通过电阻接地(低电平),单片机进入正常状态。

S51单片机复位电路的原理

上网看

51单片机“上电/按键复位电路”的原理及其电容C的作用???

简单来讲电容在这里只起到了一个启动的作用,就是按键按下后立即释放电容内部的电荷,直接连接到单片机的复位端给复位端强行输入一个电位使单片机复位~~

51单片机的复位电路中R C满足的条件

51单片机的复位电路中RC满足的条件如下:1、上电制动RC:只要电源的的上升时间不超过1米每秒,就可以实现自动上电复位。2、软件RC:复位信号保持时间是编程人员预定的时间。3、按键电平RC:注意,复位信号保持时间大于2个时钟周期。复位原理:在单片机启动0.1S后,电容C两端的电压持续充电为5V,这是时候10K电阻两端的电压接近于0V,RST处于低电平所以系统正常工作。当按键按下的时候,开关导通,这个时候电容两端形成了一个回路,电容被短路,所以在按键按下的这个过程中,电容开始释放之前充的电量。随着时间的推移,电容的电压在0.1S内,从5V释放到变为了1.5V,甚至更小。根据串联电路电压为各处之和,这个时候10K电阻两端的电压为3.5V,甚至更大,所以RST引脚又接收到高电平。单片机系统自动复位。

51单片机的复位电路由哪些原件构成 其作用各是什么 复位电路有哪些类型

uff1duff1d

51单片机“上电/按键复位电路”的按键复位原理和其中电容C的作用???

上电瞬间,电容相当于短路,慢慢充电只VCC,电路相当于断路。此过程RST上形成一个高电平,单片机复位,按下开关,电容通过r1对RST放电,完成安检复位

80C51单片机和DAC0832的接口设计,为什么这个例子的数据是从P0口输出的?

51单片机而言,P2和P0作为地址总线高位地址由P2表示,低位地址由P0表示,组成16位地址

画出MCS-51单片机外接晶振的电路原理图

所有的51都可以参考这个图应该习惯看PDF

AT89C51单片机中外围电路中晶振的作用

产生固定的时钟周期,让单片机正常工作

51单片机为什么要用12M的晶振

6M的晶振也可以吗,这是由器件本身决定的嘛

51单片机最小系统晶振电路

51单片机晶振电路的两个瓷片电容是20~33PF 。51单片机最小系统:1、时钟电路51 单片机上的时钟管脚:  XTAL1(19 脚) :芯片内部振荡电路输入端。  XTAL2(18 脚) :芯片内部振荡电路输出端。2、复位电路  在单片机系统中,复位电路是非常关键的,当程序跑飞(运行不正常)或死机(停止运行)时,就需要进行复位。  MCS-5l 系列单片机的复位引脚RST( 第9 管脚) 出现2个机器周期以上的高电平时,单片机就执行复位操作。如果RST 持续为高电平,单片机就处于循环复位状态。3、EA/VPP(31 脚) 的功能和接法  51 单片机的EA/VPP(31 脚) 是内部和外部程序存储器的选择管脚。当EA 保持高电平时,单片机访问内部程序存储器;当EA 保持低电平时,则不管是否有内部程序存储器,只访问外部存储器。

新手学习C51单片机(AT89C51),不懂晶振 能不能解释下下图的晶振电路?

c1、c2 是为了晶振起振设计的! R1、c3是复位嘛!

AT89S51单片机最小系统组成有哪些?

AT89S51单片机最小系统组成有哪些?8051 based Full Static CMOS controller with Three-Level Program Memory Lock32 I/O lines, 2 Timers/Counters, 6 Interrupts Sources, Watchdog Timer, 2 DPTRs4K Flash, 128 Bytes On-chip RAM

51单片机最小系统原理图

单片机:单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。最小系统组成:51单片机最小系统:单片机、复位电路、晶振(时钟)电路、电源最小系统用到的引脚1、主电源引脚(2根)VCC:电源输入,接+5V电源GND:接地线2、外接晶振引脚(2根)XTAL1:片内振荡电路的输入端XTAL2:片内振荡电路的输出端3、控制引脚(4根)RST/VPP:复位引脚,引脚上出现2个机器周期(如果用11.0592Mhz的晶振,一个机器周期为1us,一个机器周期等于12个时钟周期)的高电平将使单片机复位,电源:电脑端输出232电平,单片机是TTL电平,需要USB转换模块对其转换复位电路:分为高电平和低电平复位。上电复位、按键复位、看门狗复位。单片机的复位电路就好比电脑的重启部分,当电脑在使用过程中死机,按下重启按钮电脑内部的程序开始从头执行。单片机也一样,当单片机系统在运行中,受到环境干扰出现程序跑飞的时候,按下复位按钮,内部程序从头开始执行

51单片机最小系统模块

复位端口是高电平有效,当复位键按下RST端是高电平进行复位,放开时对电容进行充电而使RST端为低电平,使单片机开始进行正常工作.

求只用51单片机的5个I/O口就能扫描完5x5矩阵键盘的原理图,有程序更好。

你的单片机的 5 个 I/O 口支持 A/D 转换吗?支持的话可以实现。如果不支持,则无法实现。

c51单片机矩形键盘检测问题 急急!!!

恕本人拙见,毕业好几年了,突然有点回忆了,程序什么的都不会了呢:主程序的驱动数码管的P0是显示0吧,再看下面循环检测的程序,我好像看到从上到下没什么意义呢,temp还是0x7f,而且下面case程序无7f的值,不妨改一个值为7f,看看显示会不会有变化。哈哈,不对的地方指教哈

8051单片机5x5键盘扫描程序

完全可以,主要是程序编制,和4*4键盘原理是一样的, 一个口的5根线作为输出,轮换有一根线输出低电平,另一个口5根线作为输入,通过读到的输入数据就可以知道哪个键按下我认为编程比4*4键盘还简单,因4*4按键只占用一个端口如P0,输出数据和读取数据用的都是它, 而5*5键盘用的是2个端口,输出和读取相互独立,互不影响

51单片机 矩阵键盘扫描

什么意思

有没有学51单片机的好教材

楼上的复制粘贴功力深厚,PFPF!不过也不知阁下有没用过就向人家推荐?我见过不少入门51单片机的书,都可以,足够简单易读。学单片机,实践极其重要,光看书是没什么用的,你应该把重点放在这里。要买一块开发板,或者自己做实验板,必须实践!

51单片机,有8个流水灯,每个之间延迟1秒,这个延迟用c程序编写怎么写

写个for循环 在调试下就行了

MCS-51单片机在响应中断时,所有的中断标志都由内部硬件自动清零

不是所有的都是硬件清零,具体是哪些搞忘了,回家没带书

80C51单片机片内RAM低128个存储单元划分为哪4个主要部分?各部分主要功能是什么?

returnk是函数返回值,这是个子函数,处理完后返回给调用函数一个处理后的值。k=(k<<1)|j;这个是指k左移一位,在或上j,因为j=sda,看你的写法,据我猜测da是一个芯片的端口,这是串行输入的方式,你要读取芯片的输出值假设某个时候k=00000001,假设j这个时候为1,那执行k=(k<<1)|j;后,k左移一位再或上j就为00000011了,一共执行8次,刚好从sda也就是j那里读出了一个字节的数据。欢迎追问

(MSC-51单片机问题 汇编)JZ e的操作码地址为1000H,e=20H,它的转移目的地址为__________.

1020H操作码地址指的是当前行地址,目标地址=当前地址+相对地址(操作数地址,这里是20H)

80c51单片机基础练习习题 资料 试题

为什么不自己弄呢?

用89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波、三角波等信号波形,

这些其实都不难,学学原理,看看网上其它人的作品就有眉目了,其实这些自己作出来才锻炼人,不要老想着找人要程序,要原理

我想学51单片机不知道从哪学起,请推荐几本书和简绍一下方法

可以看看《单片机机应用100列》还可以上网搜搜相关的视频

51单片机 4*4键盘 用上拉电阻不用?

要用的

求《新编mcs-51单片机应用设计》张毅刚第三版PDF

https://zhidao.baidu.com/question/1514323684746476180.html

80c51单片机在应用中P0和P2是否可以直接作为输入或输出连接开关、指示灯等外围设备

对.

新编mcs-51单片机应用设计第3版 张毅刚怎样

张老师的书都不错,最经典的是《单片机原理与应用》这本书,对于初学者来说非常适合。国内的书都差不多, 随便找一本看就行, 重要的是多动手。

MCS-51单片机原理及嵌入式系统应用 答案

推荐你看哈尔滨工业大学张毅刚主编的51最新版本的那书说的很明白

MCS-51单片机原理、接口及应用课后题详解(主编郭文川,电子工业出版社)

用8051单片机实现八位双向移位寄存器逻辑功能。

外科?本题目,需要编程,不需要做手术。

8051单片机交通灯控制系统设计毕业论文

很简单,你把微机原理、计算机系统看一遍就会了。

求51单片机控制的交通灯电路图

GEWEIEQU21HSHIWEIEQU23HSCANLEDEQU25HSCANMODEEQU26HREDEQU28HGREENEQU29HYELLOWEQU32HNUMTIMEQU33HLEDEQU34HORG000HJMPSTARTORG0BHJMPTIMER0ORG100HSTART:MOVSP,#50HMOVR0,#20HMOVR5,#20CLR0:MOV@R0,#00HINCR0DJNZR5,CLR0MOVTMOD,#01HMOVTH0,#HIGH(65536-5000)MOVTL0,#LOW(65536-5000)SETBTR0MOVIE,#10000010BMOVP0,#0FFHMOVP1,#0FFHMOVP2,#0FFHMOVP3,#0FFHMOVR3,#10MOVR2,#3MOVR1,#10MOVR7,#200MOVRED,#10MOVYELLOW,#3MOVGREEN,#10MOVNUMTIM,#10MOVLED,#0FFHAJMP$;=======================TIMER0:PUSHACCPUSHPSWMOVTH0,#HIGH(65536-5000)MOVTL0,#LOW(65536-5000)DJNZR7,RET0MOVR7,#200MOVA,SCANMODEMOVB,#4DIVABMOVA,BRLAMOVDPTR,#TAB_SCANJMP@A+DPTRTAB_SCAN:AJMPRED_LIGHTAJMPYEL_LIGHTAJMPGRE_LIGHTAJMPYEL_LIGHTRET0:MOVA,NUMTIMLCALLBIN_BCDMOVSHIWEI,AMOVGEWEI,BINCSCANLEDMOVA,SCANLEDMOVB,#4DIVABMOVA,BRLAMOVDPTR,#TAB_SCAN0JMP@A+DPTRTAB_SCAN0:AJMPSCAN_L1AJMPSCAN_L2SCAN_L1:MOVP2,#11110111BMOVA,SHIWEIJMPEND_SCANSCAN_L2:MOVP2,#11111011BMOVA,GEWEIJMPEND_SCANEND_SCAN:MOVDPTR,#TABLEMOVCA,@A+DPTRMOVP0,AMOVA,LEDMOVP1,APOPPSW

利用红外遥控和at89s51单片机来实现控制灯的开关,求说明,介绍,原理图和程序,回答满意现金回报

就是一个红外遥控解码程序

我无线电不懂,红外写过51单片机的收发程序,可我不会制作遥控器···我怎么不能追问啊

1mol;1.204×1024;10mol;17g;HCl;水;硝酸盐;含有氢原子的量0.2mol×3=0.6mol;

tda2030和51单片机做音频功率放大器求设计思路 框图及原理图

tda2030?单片18w,音质很差劲!用LM3886tf吧,声音很暖!

8位数码管的51单片机电子钟程序用电路图

这个简单,可在网上找下就可以了

谁用at89c51单片机控制dht11程序急需!!!

DHT11?没见过...

51单片机中nop函数是干嘛的?

51的指令周期是对晶振12分频如果晶振是12m那么执行一条一个周期的的指令就是1us即1s/(12m/12分频)=1usnop是一个周期所以20m下1s/(20m/12)=0.6us

51单片机 c语言里 _nop_ 函数怎么用 具体一点 求高手指教

1、C语言中没有_nop_()函数,该函数是在51单片机中用的延时函数,延时一个指令周期。一般包含在intrins.h头文件当中。2、例如用6MHz的晶振,则如下for循环大约延时1秒。inti;for(i=0;i<6000000;i++)_nop_();//延时一个指令周期,相当于执行一条无意义的语言

在51单片机中_nop_()延时多长时间?

_nop_()要延时1个指令周期。1、时钟周期=振荡周期,名称不同而已,都是等于单片机晶振频率的倒数,如常见的外接12M晶振,那它的时钟周期=1/12M。2、机器周期,8051系列单片机的机器周期=12*时钟周期,之所以这样分是因为单个时钟周期根本干不了一件完整的事情(如取指令、写寄存器、读寄存器等),而12个时钟周期就能基本完成一项基本操作了。3、指令周期。一个机器周期能完成一项基本操作,但一条指令常常是需要多项基本操作结合才能完成,完成一条指令所需的时间就是指令周期,当然不同的指令,其指令周期就不一样的了。51单片机是对所有兼容Intel8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flashrom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

51单片机c语言 _nop_()是一个空指令?短时间延时的?空几个机器周期?

好像是三个。。。。

51单片机使用汇编语言循环延迟时间怎么算?

;==========<延时子程序>=========882usDELAY882: ;1.085x((202x4)+5)=882MOV R7,#202DELAY882_A:NOPNOPDJNZ R7,DELAY882_ARET;==========<延时子程序>========1000usDELAY1000: ;1.085x((229x4)+5)=999.285MOV R7,#229DELAY1000_A:NOPNOPDJNZ R7,DELAY1000_ARET;==========<延时子程序>========2400usDELAY2400: ;1.085x((245x9)+5)=2397.85MOV R7,#245DELAY2400_A:NOPNOPNOPNOPNOPNOPNOPDJNZ R7,DELAY2400_ARET

在51单片机中_nop_()延时多长时间?

_nop_()要延时1个指令周期。1、时钟周期=振荡周期,名称不同而已,都是等于单片机晶振频率的倒数,如常见的外接12M晶振,那它的时钟周期=1/12M。2、机器周期,8051系列单片机的机器周期=12*时钟周期,之所以这样分是因为单个时钟周期根本干不了一件完整的事情(如取指令、写寄存器、读寄存器等),而12个时钟周期就能基本完成一项基本操作了。3、指令周期。一个机器周期能完成一项基本操作,但一条指令常常是需要多项基本操作结合才能完成,完成一条指令所需的时间就是指令周期,当然不同的指令,其指令周期就不一样的了。51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8004单片机,后来随着Flash rom技术的发展,8004单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。51单片机是基础入门的一个单片机,还是应用最广泛的一种。需要注意的是51系列的单片机一般不具备自编程能力。

51单片机 c语言里 _nop_ 函数怎么用 具体一点 求高手指教

1、C语言中没有_nop_()函数,该函数是在51单片机中用的延时函数,延时一个指令周期。一般包含在 intrins.h 头文件当中。2、例如用6MHz的晶振,则如下for循环大约延时1秒。int i;for(i=0; i<6000000; i++) _nop_(); // 延时一个指令周期,相当于执行一条无意义的语言

51单片机送低电平就报警,想问下报警的原理请仔细点,谢谢了

9012是低电平导通PNP三极管;9013是高电平导通NPN三极管。9012三极管基极和集电极如果是低电平,发射极与集电极就会导通有电流流过蜂鸣器。

at89c51单片机对应高低电平的电压值

这个请参考数字电路的教材, 其实很好懂,正逻辑理想的低是0V,高是5V 但实际的,低的1V以下也算是低电平了,高的一般大于3.5V

89c51单片机定时计数器的工作原理?

单片机C51计数器要求:编写一个计数器程序,将T0作为计数器来使用,对外部信号计数,将所计数字显示在数码管上。 该部分的硬件电路如图所示,U1的P0口和P2口的部份引脚构成了6位LED数码管驱动电路,数码管采用共阳型,使用PNP型三极管作为片选端的驱动,所有三极管的发射极连在一起,接到正电源端,它们的基极则分别连到P2.0…P2.5,当P2.0…P2.5中某引脚输是低电平时,三极管导通,给相应的数码管供电,该位数码管点亮哪些笔段,则取决于笔段引脚是高或低电平。图中看出,所有6位数码管的笔段连在一起,通过限流电阻后接到P0口,因此,哪些笔段亮就取决于P0口的8根线的状态。   编写程序时,首先根据硬件连线写出LED数码管的字形码、位驱动码,然后编写程序如下: #include "reg51.h"#define uchar unsigned char#define uint unsigned int uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB}; //位驱动码uchar code DispTab[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xFF}; //字形码uchar DispBuf[6]; //显示缓冲区 void Timer1() interrupt 3{ uchar tmp;uchar Count; //计数器,显示程序通过它得知现正显示哪个数码管TH1=(65536-3000)/256;TL1=(65536-3000)%256; //重置初值tmp=BitTab[Count]; //取位值P2=P2|0xfc; //P2与11111100B相或P2=P2&tmp; //P2与取出的位值相与tmp=DispBuf[Count];//取出待显示的数 tmp=DispTab[tmp]; //取字形码P0=tmp;Count++;if(Count==6)Count=0; }void main(){ uint tmp;P1=0xff;P0=0xff;TMOD=0x15; //定时器0工作于计数方式1,定时器1工作于定时方式1TH1=(65536-3000)/256;TL1=(65536-3000)%256; //定时时间为3000个周期TR0=1; //计数器0开始运行TR1=1;EA=1;ET1=1;for(;;){ tmp=TL0|(TH0<<8); //取T0中的数值DispBuf[5]=tmp%10;tmp/=10;DispBuf[4]=tmp%10; tmp/=10;DispBuf[3]=tmp%10;tmp/=10;DispBuf[2]=tmp%10;DispBuf[1]=tmp/10;DispBuf[0]=0;}}   这个程序中用到了一个新的知识点,即数组,首先作一个介绍。   数组是C51的一种构造数据类型,数组必须由具有相同数据类型的元素构成,这些数据的类型就是数组的基本类型,如:数组中的所有元素都是整型,则该数组称为整型数组,如所有元素都是字符型,则该数组称为字符型数组。   数组必须要先定义,后使用,这里仅介绍一维数组的定义,其方式为:   类型说明符 数组名[整型表达式]   定义好数组后,可以通过:数组名[整型表达式]来使用数组元素。   在定义数组时,可以对数组进行初始化,即给其赋予初值,这可用以下的一些方法实现:   1.在定义数组时对数组的全部元素赋予初值:  例:int a[5]={1,2,3,4,5};  2.只对数组的部分元素初始化;  例:int a[5]={1,2};   上面定义的a数组共有5个元素,但只对前两个赋初值,因此a[0]和a[1]的值是1、2,而后面3个元素的值全是0。   3.在定义数组时对数组元素的全部元素不赋初值,则数组元素值均被初始化为0   4.可以在定义时不指明数组元素的个数,而根据赋值部分由编译器自动确定  例:uchar BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};则相当于定义了一个BitTab[6]这样一个数组。   5.可以为数组指定存储空间,这个例子中,未指定空间时,将数组定义在内部RAM中,可以用code关键字将数组元素定义在ROM空间中。  uchar code BitTab[]={0x7F,0xBF,0xDF,0xEF,0xF7,0xFB};   用这两种定义分别编译,可以看出使用了code关键字后系统占用的RAM数减少了,这种方式用于编程中不需要改变内容的场合,如显示数码管的字形码等是很合适的。   6.C语言并不对越界使用数组进行检测,例如上例中数组的长度是6,其元素应该是从BitTab[0]~BitTab[5],但是如果你在程序中写上BitTab[6],编译器并不会认为这有语法错误,也不会给出警告(其他语言如BASCI等则有严格的规定,这种情况将视为语法错误),因此,编程者必须自己小心确认这是否是你需要的结果。   程序分析:程序中将定时器T1用作数码管显示,通过interrupt 3关键字定义函数Timer1()为定时器1中断服务程序,在这个中断服务程序中,使用 TH1=(65536-3000)/256;TL1=(65536-3000)%256;   来重置定时器初值,这其中3000即为定时周期,这样的写法可以直观地看到定时周期数,是常用的一种写法。其余程序段分别完成取位码以选择数码管、从显示缓冲区获得待显示数值、根据该数值取段码以点亮相应笔段等任务。其中使用了一个计数器,该计数器的值从0~5对应第1到第6位的数码管。   主程序的第一部分是做一些初始化的操作,设置定时器工作模式、开启定时器T1、开启计数器T0、开启T1中断及总中断,随后进入主循环,主循环首先用unsigned int型变量tmp取出T0中的数值,这里使用了“tmp=TL0|(TH0<<8);”这样的形式,这相当于tmp=TH0*256+TL0,但比之于后一种形式,该方式可以得到更高的效,其后就是将tmp值不断地除10取整,这样将int型数据的各位分离并送入相应的显示缓冲区

74L138译码器对51单片机实现什么功能

74L138译码器对51单片机实现功能当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将用单片机3个引脚控制地址端的二进制编码在一个对应的输出端以低电平译出。若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器用与非门组成的3线-8线译码器74LS1383线-8线译码器74LS138的功能表无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态。译码器工作原理:译码器是一种具有“翻译”功能的逻辑电路,这种电路能将输入二进制代码的各种状态,按照其原意翻译成对应的输出信号。有一些译码器设有一个和多个使能控制输入端,又成为片选端,用来控制允许译码或禁止译码。在图1中,74138是一种3线—8线译码器 ,三个输入端CBA共有8种状态组合(000—111),可译出8个输出信号Y0—Y7。这种译码器设有三个使能输入端,当G2A与G2B均为0,且G1为1时,译码器处于工作状态,输出低电平。当译码器被禁止时,输出高电平。

74138等可以扩展51单片机的I/O口吗

问题同楼主,学习了,谢谢

利用51单片机扩展一片ROM2416,扩展一片RAM6116,扩展一片i/o口74145,用译码器74138进行译码

用 138 的输出端,连接各个芯片的片选端。一般来说,138 的输出端,Y0Y1Y2Y3。。。Y7,你要是连续的使用,它们产生的地址,就是连续的。你要是间隔使用,如 Y0、Y2,它们产生的地址,就是不连续的。

74L138译码器对51单片机实现什么功能

74L138译码器对51单片机实现功能当一个选通端(E3)为高电平,另两个选通端(E1)和/(E2))为低电平时,可将用单片机3个引脚控制地址端的二进制编码在一个对应的输出端以低电平译出。若将选通端中的一个作为数据输入端时,74LS138还可作数据分配器用与非门组成的3线-8线译码器74LS1383线-8线译码器74LS138的功能表无论从逻辑图还是功能表我们都可以看到74LS138的八个输出引脚,任何时刻要么全为高电平1—芯片处于不工作状态。译码器工作原理:译码器是一种具有“翻译”功能的逻辑电路,这种电路能将输入二进制代码的各种状态,按照其原意翻译成对应的输出信号。有一些译码器设有一个和多个使能控制输入端,又成为片选端,用来控制允许译码或禁止译码。在图1中,74138是一种3线—8线译码器 ,三个输入端CBA共有8种状态组合(000—111),可译出8个输出信号Y0—Y7。这种译码器设有三个使能输入端,当G2A与G2B均为0,且G1为1时,译码器处于工作状态,输出低电平。当译码器被禁止时,输出高电平。

51单片机控制buck电路的工作原理和特点

会储存电能,高效率。1、Buck电路的工作原理是:当开关管导通时,电感L会储存电能,同时电容C也会储存电能,而当开关管关闭时,电感L会释放储存的电能,同时电容C也会将储存的电能传递给负载。2、由于Buck电路的能量转换和控制机制,使其能够实现高效率转换。

51单片机P1口八个灯和P2口八个灯,如何定义P1口八个灯全亮然后P2口八个灯全灭?我只能用sbi

P0、P1头文件已经定义,你直接使用即可。sbit LED=P0是错误的,sbit 用来定义可位寻址寄存器的一个位,不能用来定义字节。如果你想方便控制一个端口的各位,可以这样:sbit LED0=P0^0……sbit LED7=P0^7

用89C51单片机设计多功能低频函数信号发生器,能产生方波、正弦波、三角波等信号波形,

这些其实都不难,学学原理,看看网上其它人的作品就有眉目了,其实这些自己作出来才锻炼人,不要老想着找人要程序,要原理

用8051单片机做一信号发生器

这个很简单的,波形实际是单片机输出的数字。一直输出100,1S以后输出0,如此循环就是方波。锯齿波就是从输出从0逐一增加到100,到一百后跳转到0,就在示波器上形成锯齿波形。三角波就是从输出从0逐一增加到100,到一百后再逐一减少到0.正弦波需要你计算下,假如波峰是100,波谷是0,你要计算下中间各点的数值,制作一个数据表,一个一个顺序输出,就能得到正弦波。频率其实就是输出数字用的时间,幅值是你的数字多少。这里不给出程序,建议你参考自己的教材自己尝试编写一下,这是单片机的一个重要实验,对你理解单片机和编写程序有很大帮助。编程时先绘制流程图,再根据流程图,参照语法指令完成程序,调试后就可以了。祝你成功。

51单片机信号发生器原理

基于单片机的的信号发生器大概有两种形式,1、全部波形信号由单片机软件产生,再经由D/A转换输出;2、单片机+专用信号发生系芯片,这种方式单片机仅扮演主控角色,信号由芯片硬件产生;

单片机问题。msp430g2 和51单片机有哪些区别?求详细一点。

……完全不一样的架构,根本没有可比性。

51单片机最小系统模块

复位端口是高电平有效,当复位键按下RST端是高电平进行复位,放开时对电容进行充电而使RST端为低电平,使单片机开始进行正常工作.

MCS-51单片机最小系统包括那些部分

1971年11月,Intel推出MCS-4微型计算机系统(包括4001 ROM芯片、4002 RAM芯片、4003移位寄存器芯片和4004微处理器)其中4004(下图)包含2300个晶体管,尺寸规格为3mm×4mm,计算性能远远超过当年的ENIAC,最初售价为200美元。1972年4月,霍夫等人开发出第一个8位微处理器Intel 8008。由于8008采用的是P沟道MOS微处理器,因此仍属第一代微处理器。1973年intel公司研制出8位的微处理器8080;1973年8月,霍夫等人研制出8位微处理器Intel 8080,以N沟道MOS电路取代了P沟道,第二代微处理器就此诞生。

51单片机最小系统具备哪几个电路每个电路作用

晶振电路、复位电路,前者为单片机提供振荡源,后者可使系统上电或者按下复位

89C51单片机的最小系统的构成?

89C51单片机的最小系统电路主要包括:电源电路、复位电路、时钟电路。1.电源电路。电源电路就是单片机的供电电路,一般是3.3V或者5V,具体多少要参考各种型号的单片机的工作电压,通常情况下是5V,这里是指通常情况下。2.复位电路:包括上电复位和手动复位。3.时钟电路用来配合外部晶体实现振荡的电路,这样可以为单片机提供运行时钟,如果运行时钟为0 的话,单片机就不工作,当然超出单片机的工作频率的时钟也会导致单片机不工作。在接通电源瞬间,电容上的电压不能“跃变”,复位下拉电阻上的电压接近电源电压,即RST为高电平,在电容充电的过程中RST端电压逐渐下降,当RST端的电压小于某一数值后,CPU脱离复位状态。由于电容C1足够大,可以保证RST高电平有效时间大于24个振荡周期,CPU能够可靠复位。增加手动复位按键是为了避免死机时无法可靠复位。当复位按键按下后电容C1通过R5放电。当电容C1放电结束后,RST端的电位由R1与R2分压比决定。拓展资料:89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低电压、高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的89C51是一种高效微控制器,89C2051是它的一种精简版本。89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
 1 2 3 4 5  下一页  尾页