c51专题

c51外部中断

/*-----------------------------------------------名称:外部中断0电平触发论坛:www.doflye.net编写:shifang日期:2009.5修改:无内容:通过中断接口P3.2连接的独立按键测试,按一次P1口的LED灯反向,这里使用电平触发,所以一直按键不松开和一次按键效果不相同,按下会看到灯全部亮说明中断一直在作用,用示波器看则是高频方波--

嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍 蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。 蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。 有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。 c51中的蜂鸣器是无源蜂鸣器 二、蜂鸣器原理图 如图

C51学习归纳12 --- 外部中断、红外遥控

红外遥控是一个非常使用的技术,所以有必要单独讲一下。我们之前已经完成了电机调速的功能,现在我们讲红外控制和电机调速结合在一起,使用红外实现电机的调速。         为什么要采用外部中断,因为红外遥控的发送速率非常快,如果不使用外部中断,可能还没来得及接收信号,就采集结束了。为了实时采集,所以要使用外部中断。         因为红外采用的是NEC标准,所以本节也会学习NEC

C51学习归纳9 --- I2C通讯学习(重点)

首先,我自己学习过以后的直观感觉,通信协议是单片机的灵魂之一,只有规定好了通信协议我们才能够正确的接收到信息,才能实现更加深入的研究。所以这一部分是需要好好学习的。         本节借助一个可存储的芯片AT24C02,进行在I2C协议上的读取,实现掉电不丢失,永久存储数据并读取的工作。 一、I2C通信协议原理         24C02的通讯方式是I2C,所以这个芯片

【C51】C51单片机实现的 抽奖机 设计与编程指南

文章目录 前言:1. 实现效果2. 准备工作3. 编写代码总结: 前言: 在本文中,我们将介绍如何使用C51单片机来实现一个简单的抽奖机。这个项目不仅能够展示C51单片机的基本应用,还能让我们了解如何通过编程来控制硬件,实现有趣的交互功能。我们将从实现效果、准备工作、到编写代码,一步步引导读者完成整个抽奖机的制作流程。 1. 实现效果 https://live.csdn.ne

C51学习归纳7 --- LED点阵显示静态图片和动画

今天学习一个非常常用的功能。外面的流动字母的LED大屏大家应该很常见吧。今天!学完这个,你就可以自己设计一个LED大屏了! 一、开发板原理图         首先我们看点阵屏幕的输入信号,有P0_X和DP_X控制。P0_X直接就是芯片的P0输出端口,那么我们现在关注一下DP_X的产生。         从这里不难看出,通过P3_4,5,6可以产生DP_X端口。

C51单片机 串口打印printf重定向

uart.c文件 #include "uart.h"void UartInit(void) //4800bps@11.0592MHz{PCON |= 0x80; //使能波特率倍速位SMODSCON = 0x50; //8位数据,可变波特率。使能接收TMOD &= 0x0F; //清除定时器1模式位TMOD |= 0x20; //设定定时器1为8位自动重装方式TL1 = 0xF4;

C51学习归纳2 --- 按键控制

这一节的学习流程同样先从开发板开始,然后在具体考虑功能的实现。 一、开发板原理         根据开发板,我们能够看出当按键按下后,P3_0~3会输入低电平。          根据开发板,我们能够看出,当P2_X输出低电平时,小灯点亮。              根据开发板,我们能够看出,P3,P2直接连在开发板上,可以直接使用。   二、按键控制LE

【小技巧】Keil C51 报错“*** ERROR L107: ADDRESS SPACE OVERFLOW****

软件:Keil C51 C51V961版本 电脑:Win10 报错提示: compiling System.c... linking... *** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?LCD LENGTH: 0034H Program Size: data=174.0 xdata=17 code=1205 T

Keil C51​​​​​​​中函数指针使用注意事项

Keil C51中函数指针使用注意事项    在C51 中,结构体成员采用函数指针后,发现main函数中局部变量的值被修改,开始以为堆栈溢出,后发现,单片机使用函数指针会使得调用树出错,在帮助文档中,搜索 function pointer 中,note 指明 Note:  Because of the limited stack space of the 8051, the linker

单片机原理及技术(二)—— AT89S51单片机(一)(C51编程)

目录 一、AT89S51单片机的片内硬件结构 二、AT89S51的引脚功能 2.1 电源及时钟引脚 2.2 控制引脚 2.3 并行 I/O口引脚 三、AT89S51的CPU 3.1 运算器 3.1.1 算术逻辑单元(ALU) 3.1.2 累加器A 3.1.3 程序状态字寄存器(PSW) 3.2 控制器 四、AT89S51单片机存储器的结构 4.1 程序存储器空间 4.2

Keil for ARM 下增加支持C51,C5x

Keil for ARM 下增加支持C51,C5x 第一步编辑 TOOLS.ini   找到Keil安装目录, 用记事本修改 TOOLS.ini   在 [ARM] 段前面增加 [C51]段,需增加的内容如下, 注意 PATH路径可能需修改为实际路径 [C51] PATH="C:\Keil\C51\" SN=K1DZP-5IUSH-A01UE VERSION=V9.01 BOOK0=H

红米A2/A2+/POCO C51手机秒解BL+快速获取root权限+解谷歌锁刷机救砖教程

红米A2/A2+/POCO C51手机是目前小米公司针对于国外用户的1个独立的品牌,或者和国内的红米手机都非常相似,几款手机由于硬件非常接近,我们这里将其放在一起和大家介绍而从他们的代号中我们可以得知,目前A2/POCO的代号为water,红米A2+的代号则为cloud相对于国内系统的MIUI系统,国外的poco系列,搭配的则是原生安卓+POCO桌面的风格。作为国外线下低端机的代表,ROM乐园团队

【嵌入式】keil5安装(同时兼容C51和STM32)

最近在开发STM32的时候,安装Keil5,遇到STM32和C51的共存的问题,在网上找了很多方法,又遇到一些bug,最终还是弄好了。因此将处理的过程记录下来,希望对遇到相同问题的朋友一些启发。 1、下载安装包 Keil Product Downloads官网链接:Keil Product Downloads 2、安装C51 先安装C51的安装包,再安装STM32的

VS+VAX的提示功能快速编写C51程序

虽然有智能提示的软件有很多,比如Source Insight、Ultra Edit,但我都不太喜欢。周立功的TKStudio也用过,感觉还行,但还是不太满意。 由于学C#,我的电脑上安装了Visual Studio 2008,那代码提示功能太强大了。于是,研究了一段时间,终于实现了利用VS+VAX的强大提示功能快速编写C51程序。 如果你电脑上没有VS,并且除了这里你其它地方不用,那就建

位操作和位移地址应用在LED流水灯-C51单片机上的编写与实操

前言 本文将用实操与讲解描述位操作如何用在C51单片机。需要先学习关于宏定义,位操作以及16进制与2进制。 本人采用的电路板上的led为共阳极接法,需要针脚输出低电平才可点亮led 一、位操作在C51单片机的编写与运行 位操作就是使2进制代码在硬件上的直接运行,请看下面代码块 #include "reg52.h"/*使用包含该头文件我们才能用reg52.h中定义的关于针脚寄存器位置

C51_外部中断

终端的概念 当CPU在正常运行时,如果外部发生了紧急事件请求,CPU则会先暂停当前的工作,转而调用特定的的程序来处理这个紧急事件。处理完毕后,再回到原来中断发生的地方继续工作,这样的过程称为工作实现这种功能的系统称为中断系统,请示CPU中断的请求称为中断源,对紧急事件的处理程序称为中断服务程序 中断系统框架 中断源 中断触发条件 低电平触发 当外部中断输入引脚检测到低电平时中断触

C51_蜂鸣器

蜂鸣器介绍 按照驱动方式可以分为有源蜂鸣器和无源蜂鸣器 蜂鸣器的工作原理 当P1.0引脚为高电平时,电流无法通过蜂鸣器,此时蜂鸣器不工作当P11.0为低电平时,Q5工作在饱和区,电流从发射极流向集电极并通过蜂鸣器,此时蜂鸣器工作 实例与代码解析 包含头文件 #include <reg52.h> 位定义蜂鸣器 sbit BEEP = P1 ^ 0; // 定义蜂鸣器 宏定义蜂鸣

c51单片机P1 口亮灯实验

设置:关闭实验仪电源,MON51K 卡上跳线帽分别短接至 MON、片 内; 2)接线: F P1.0~P1.7→L1~L8。 F实验箱主板 CZ1/USB 口→电脑串口/USB 口。 3)运行:开启实验仪电源,选择通信端口、硬件仿真,点击编译下载、 开始调试,运行程序(Debug 下 Use 选择 Keil Monitro-51 Driver 然后点击 sett

C51左右移函数和左右移区别

“_crol_(移动对象,左移的位数)"是左移函数,操作效果是:向左移动,最高位移动到最低位。 eg1:1110左移一位? _crol_(1110,1);——移动后是1101,最高位的1移动到了最低位。 但是如果使用的是1110<<1语句,移动之后是1100,最低位补0. "_cror_(移动对象,左移的位数)"——操作同理上述。

基于C51实现按键控制

🐋 前言:本实验基于STC89C52RC单片机,根据电路原理图编程通过独立按键控制led灯、通过矩阵按键控制开发板数码管模块。由于51系列单片机结构大同小异,读者可根据此博客举一反三,实现所需完成的功能。 🐬 目录: 一、按键介绍与按键消抖二、按键原理图分析三、独立按键控制led灯四、矩阵按键控制开发板数码管模块 🐇 实验所选单片机及结构展示(以普中C51为例,其他大同小异)

C51回顾七

1.定时器中断的允许位ET0的置位或置零可能会影响之后的延迟函数的执行时间。有时候你将ET0=1打开,仿佛延迟函数变长了,ET0=0关闭,仿佛延迟函数又变短了。这也许就是定时器的溢出时间很短,而定时器的中断函数又有很所语句要执行,在ET0=1打开时,在执行延迟函数的中间,可能发生了定时器的中断,转而去执行定时器中断函数,并且可能这样进出中断很多次,导致了延迟函数的延迟时间不确定了。 2.

Keil C51 汉字显示 BUG 解决方案

Keil C51在编译的时候会将0xFD的字符(有些汉字含有该字符的内码)过滤,而导致编码与实际不符,如“三”实际编码:0XC8FD,而Keil C51则输出为0xC800。 keil官方 由于涉及该BUG的汉字并不是很多,所以推荐“加后缀”的方法 具体方法:遇到无法显示字符时在其后加\xFD 如:unsignedchar code s[]=“数学”;改为unsignedchar code

keil c51不编译未调用函数

在用KEIL C51,经常会遇到定义了的函数未调用,编译时会发出“UNCALLED SEGMENT,IGNORED FOR OVERLAY PROCESS”的警告,我们不想手动去删除,也不想这部分代码被编译和链接进最终的程序,以免浪费有限的储存空间。方法如下:        未设置的情况下: 设置如下 1.把target options中的device页中选上“use Extende

C51的一些误区和注意事项

1)C忌讳绝对定位 常看见初学者要求使用_at_,这是一种谬误,把C当作ASM看待了。在C中变量的定位是编译器的事情,初学者只要定义变量和变量的作 用域,编译器就把一个固定地址给这个变量。怎么取得这个变量的地址?要用指针。比如unsigned char data x;后,x的地址就是&x, 你只要查看这个参数,就可以在程序中知道具体的地址了。 2)设置SP的问题原因和1差不对,编译器