C51编程经验三则在单片机的开发应用中,已逐渐开始引入高级语言,C语言就是其中的一种。用惯了汇编的人,总觉得高级语言“可控性”不好,不如汇编那样随心所欲。以下是笔者在C51编程中的几点经验,希望对初学C51者有所帮助。一、C51热启动代码的编制工业控制计算机,往往设有看门狗电路,看[详细]
单片机执行程序的过程,实际上就是执行我们所编制程序的过程。即逐条指令的过程。计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。取指令的任务是:根据程序计数器PC中的值从程序存储器读出现行指令,送到指令寄存器。分析指令阶段的任务是:将指令寄存器中的指令操作码取出[详细]
1. 动手编码之前,你需要对要编码实现的解决方案有一个正式的或粗略的设计。永远不要在没有任何设计的前提下就开始编码,除非所编代码不重要。2. 优秀的代码文档跟编程语言知识一样重要。在代码源文件中,为每个主要的代码段添加注释,解释代码的基本逻辑。最好注明程序的构建和修改日期,以及修改的原[详细]
/* 名称:用 ADC0808 控制 PWM 输出说明:使用数模转换芯片 ADC0808,通过调节可变电阻 RV1 来调节脉冲宽度,运行程序时,通过虚拟示波器观察占空比的变化。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit CLK=P2^4; [详细]
最近做毕业设计,需要用按键来触发外部中断。实验的时候是正常的,但是换了个核心板以及用上自己做的PCB电路板后,出现了一些问题。问题如下:要求:将连接按键的IO口配置为上拉输入,按键一端接IO口,一端接地,即当按键按下后,该IO口会产生一个下降沿,触发下降沿中断。问题:将相应的IO口配置好后,测了引[详细]
按一下按键灯就亮,延时 10s 后自动灭。在亮灯期间再按一下键,灯立即就灭。用定时器及中断实现。题目链接:http://zhidao.baidu.com/question/1302357964153805259.html提问者采纳 2013-12-09 13:47LED EQU P3.3KEY EQU P3.7ORG 0000HLJMP STARTORG 000BHLJMP T0_INTORG 0030H;------------------------------[详细]
/* 名称:单片机与 PC 通信说明:单片机可接收 PC 发送的数字字符,按下单片机的K1 键后,单片机可向 PC 发送字符串。在 Proteus 环境下完成本 实 验 时 , 需 要 安 装 Virtual Serial Port Driver 和[详细]
/* 名称:ADC0809 数模转换与显示说明:ADC0809 采样通道 3 输入的模拟量,转换后的结果显示在数码管上。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//各数字的数码管段码(共阴)uchar code DSY_CODE[详细]
1、EQU 指令用于将一个数值或寄存器名赋给一个指定的符号名。格式: 符号名 EQU 表达式符号名 EQU 寄存器名表达式必须是一个简单再定位表达式。用 EQU 指令赋值以后的字符名,可以用作数据地址、代码地址、位地址或者直接当做一个立即数使用。比如:s equ bx+simov cx,[s]那么上面两句代码相当于如下指令:mov[详细]
在单片机中,常用到数字与字符的方法,在C中都是使用itoa函数,C51也有这个函数,但是,8051的RAM是很有限的,所以尽量避免使用int型,常用的是unsigned char。当需要转换成字符串时用itoa的话,还是有点浪费。还是自力更生,自己写了一个,代码如下:typedef unsigned char BYTE;BYTE * ByteToStr(BYTE n){BYT[详细]
关于程序的执行,以前想的不多,没有意识到一个程序在运行时,从哪里读指令,数据又写在哪里。最近在看CSAPP时这个念头经常在脑袋中晃荡。从单片机上知道,在上电的那一刻,MCU的程序指针PC会被初始化为上电复位时的地址,从哪个地址处读取将要执行的指令,由此程序在MCU上开始执行(当然在调用程序的 main之前[详细]
最近参与了一个项目,需要用嵌入式汇编写测试程序。汇编程序写过,C程序也写过,但是将它们混合起来写还是第一次,完全没有概念。只能上网找资料,自己慢慢摸索。自己一直用Windows操作系统,但是我们的项目是在Linux系统上,这两者的汇编语言系统是不同的,windows一直是Intel汇编,而Linux是At&T汇编。为[详细]
在单片机应用系统的数据处理过程中,经常会遇到小数的运算问题,如求解BCD的增量算式、线性化处理等。因此,需要用二进制数来表示小数。表示小数的方法一般有两种,定点数和浮点数。定点数结构简单,与整数的运算过程相同,运算速度快。但随着所表示数的范围的扩大,其位数成倍增加,给运算和存储带来不便,而且[详细]
制作超声波测距仪,是很多学生、单片机爱好者学习单片机动手实践的一个实作项目,这款超声波测距程序,针对目前比较广泛使的HC-SR04超声波模块而设计的,这款1602显示的超声波测距距源程序,单片机是51系列单片机,超声波测距模块先用的是HC-SRO4 超声波测距模块,单片机的晶振是12M,接线:模块TRIG接 P2.5 EC[详细]
bit和sbit都是C51扩展的变量类型。bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。除非你指定,否则这个地址是随机的。这个地址是整个可寻址空间,RAM+FLASH+扩展空间。bit只有0和1两种值,意义有点像Windows下VC中的BOOL。sbit是对应可位寻址空间的一个位[详细]
已知负跳边脉冲从51单片机P3.3引脚输入,且该脉冲数少于65535个,试利用/INT1中断,统计输入脉冲个数。脉冲数存内RAM30H(低位)31H(高位),并调用数据处理子程序WORK和显示子程序DIR(已知,可直接调用)显示,要求用边沿触发方式。参考MCS-51单片机程序:org 000hljmp mainorg 013hljmp i_int1org 050hmai[详细]
假设正脉冲宽度不超过定时器的值设T1方式1,利用门控位GATE1来启动定时器。定时器的值×T即为脉冲宽度。 ORG 1000H &[详细]
1. Brown-Out Reset掉电复位,或电源电压跌落复位, 当输入电压VCC跌到某一门限时芯片复位The MCU is reset when the supply voltage VCC is below the Brown-Out Reset threshold voltageand the Brown-out Detector is enabled. The Brown-out threshold voltage is programmable.2. Totem-pole推拉输出电路3. [详细]
因为第一次接触STM的单片机,各种寄存器和API都不熟悉,于是结合STM的库函数和编程手册对照理解。建立好工程之后,编写main函数。1.不管哪种单片机,上电以后第一重要的事就是设置时钟和初始化引脚。单看STM32F的时钟:能作为STM32F103的系统时钟的有三种,外部时钟,内部时钟,PLL时钟。跟踪到SystemInit里面,[详细]
1.意外中断。是否打开了某个中断,但是没有响应和清除中端标志,导致程序一直进入中断,造成死机假象。2. 中断变量处理不妥。若定义某些会在中断中修改的全局变量,这时要注意两个问题:首先为了防止编译器优化中断变量,要在这些变量定义时前加 volatile,其次在主循环中读取中断变量前应该首先关闭全局中[详细]

扫码关注我们
0755-82591179
邮箱:ivy@yingtexin.net
地址:深圳市龙华区民治街道民治大道973万众润丰创业园A栋2楼A09

Copyright © 2014-2025 颖特新科技有限公司 All Rights Reserved. 粤ICP备14043402号-4