一个按键的多次击键组合判别技巧
如果按键闭合时间500MS,判断为一次长击(1); 两次击键时间间隔应<700MS,如果按键释放后700MS内无键按下,则结束读键。读键完毕返回一个键号值KEY_NUM。其意义如下:KEY_NUM 意义00000000 无键按下过00000001 无意义00000010 单...
单片机自身的抗干扰若干措施
这些技术主要体现在以下几方面:1.降低外时钟频率外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,使电磁兼容检测不能达标。在对系统可靠性要求很高的应用系统中,选用频率低的单片机是降低系...
单片机C51串口中断接收和发送测试例程
#include#include#defineINBUF_LEN4//数据长度unsignedcharinbuf1[INBUF_LEN];unsignedcharchecksum,count3;bit read_flag=0;voidinit_serialcomm(void){ SCON =0x50;//SCON: serail mode 1, 8-bit U...
单片机中定时器与计数器的区别
51里通过TMOD里的T/C 位切换计数信号的来源当T/C工作在定时器时,对振荡源12分频的脉冲计数,即每个机器周期计数值加1,计数频率为1/12fosc,当晶振频率6MHZ时,计数频率为500KHz,每2us计数值加1;晶振12MHZ就是每1us加1 了。 当T...
AVR单片机外部RAM访问
最近的一个项目中,体会了一下AVR单片机的外部RAM扩展,发文记录于此。本文以ATMEGA64单片机为测试平台,外扩74HC573(资料上讲用AHC系列,但是我用HC系列在16M晶振下配置成最快速度访问并没有发现什么不妥,当然这是个不严谨的...
AVR单片机的BOOT区
使用BOOT区是解决这个矛盾的方法之一,它将FLASH存储器从物理上分为两个独立的区域,对其中的一个区的数据写入不会影响到另一个区的数据读取操作。我们可以让单片机的程序在其中一个区(通常是BOOT区)运行,而运行着的程序代...
当年做毕业设计的一些单片机小知识总结
一、单片机不能下载程序的原因1.硬件连接是否正确,电源,是否连接正常,在正确的基础上,板子是否有断线?注意P1.5,P1.6,P1.7,RST引脚和下载接口是否正确连接了,对了,如果P1.5,P1.6,P1.7用作其他用途也有可能下载不成功,俺就在P1.7上...
51单片机串口打印乱码的解决方法
问题原因12M的晶振波特率只能是2400,9600的情况下会有7.8%的误差,所以会产生乱码,而2400波特率的情况下误差是0.16%,这样就不会产生乱码了,TH1和TL1都设为F3为什么51单片机的晶振一般使用11.0592?用11.0592晶振的原因是51单...
单片机实现软件复位(软复位)的方法及讨论
虽然要使软件始终处于可控状态,最好不要用"复位",因为复位是纯硬件过程,软件是不可控的.但是我们还是要讨论方法,一般流传的方法如下:1、放狗;2、((void(code*)(void))0x0000)();3、用单片机一个引脚控制点一下RSTRST;4...
51单片机堆栈深入剖析
1.堆栈的溢出问题。MCS51系列单片机将堆栈设置在片内RAM中,由于片内RAM资源有限,堆栈区的范围也是有限的。堆栈区留得太大,会减少其他数据的存放空间,留得太少则很容易溢出。所谓堆栈溢出,是指在堆栈区已经满了的时候还要...
浅谈PIC单片机软件开发技巧
1 动作标志位的使用在整个控制中,组合的动作很多,当所有动作定位都通过光电开关控制时,在程序编写上就有一些问题。如要求左手上升到故障位、右手上升到举手位(手初始位置在最下的放下位),光电开关0有效(即为0时是挡住),到达正...
在单片机设计过程中摆脱EMC的软硬件处理方法
一、影响EMC的因数1.电压电源电压越高,意味着电压振幅越大,发射就更多,而低电源电压影响敏感度。2.频率高频产生更多的发射,周期性信号产生更多的发射。在高频单片机系统中,当器件开关时产生电流尖峰信号;在模拟系统中,当负...
单片机裸机下写一个自己的shell调试器
要处理串口数据首先是要对单片机的串口中断进行处理,我的方法是正确的命令必须要在命令的结尾处同时带有回车和换行,处理过程如下//串口接收缓冲区u8 serial_Buffer[SERIAL_MAX_LENGTH] = {0};//串口接收数据长度u16 se...
如何看懂数据手册?
首先声明一点,真正的新手是看不懂数据手册的,如果你能,说明你已经入门了。所以,当你看到数据手册头疼的时候,不要灰心,其实别人和你一样。但是数据手册是AVR最好的书,你又必须得看懂数据手册,看数据手册不能急于求成,要一遍一...
单片机IO口应用及数码管显示
1.单片机驱动蜂鸣器的实验;a)说明:Lab51单片机实验板的蜂鸣器连接到单片机的P1.5b)基本要求:控制蜂鸣器每2秒响0.5秒。#include #define unit unsigned intvoiddelay(unit x){unit i=x;unit j;for(;i>0;--i){for(j=x;j>0;...
关于单片机的N多问题
1.C语言和汇编语言在开发单片机时各有哪些优缺点?答:汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少、程序执行效率高。但是不同的CPU,其汇编语言可能有所差异,所...
51单片机红外遥控解码
编码后面还要有编码的反码,用来检验编码接收的正确性,防止误操作,增强系统的可靠性。前导码是一个遥控码的起始部分,由一个9ms的低电平(起始码)和一个4. 5ms的高电平(结果码)组成,作为接受数据的准备脉冲。以脉宽为0. 56ms...
PIC单片机循环程序
该PIC16F84单片机定时源程序可直接在MPLAB集成开发环境软件下进行汇编,其汇编后生成的HEX文件可在实验编程器1?01上对源程序进行固化并可在相应的实验板上直接观察实验的结果。PIC16F84单片机时的源程序清单如下(文件...
变量定位或函数定位
1、函数定位:假如要把C源文件 tools.c 中的函数int BIN2HEX(int xx){...}放在CODE MEMORY的0x1000处,先编译该工程,然后打开该工程的M51文件,在* * * C O D E M E M O R Y * * *行下找出要定位的函数的名称,应该形如:CODE x...
Arm设计思想与高效C语言编程联系
一.RISC设计思想RISC设计对编译器有更高的要求;相反,传统的复杂指令集的计算机(CISC)则更侧重于硬件执行指令的功能性,使CISC变得更复杂。RISC设计思想主要由下面4个设计准则来实现:▇ 指令集RISC处理器减少了指令种类,每条指...
单片机定时中断的几种精确定时编程方法
文中以定时器T1工作在定时方式1为例,晶振频率为12MHz 。1 方法1 在定时器溢出中断得到响应时,停止定时器计数,读出计数值(反映了中断响应的延迟时间),根据此计数值算出到下一次中断时,需多长时间,由此来重装载和 启动定时器...
单片机串口的新型使用方式
请看应用层使用单片机串口的示例:1 #include "samsis_api.h" // 包含api.h就可以使用serialPort类了2 serialPort com1; // 定义一个串行端口3 void TestSerialPort(void){4 int len;5 char...
哪种晶振可与 MSP430 一起使用?
A:32.768kHz晶振与MSP430一起使用时需要遵循的重要规格是:负载电容(请参阅数据表中的具体说明)注:有效负载电容晶振制造商通常会在晶振的数据表中定义有效负载电容。从电子学角度来说,电容器以串行方式连接到引脚XIN与XOUT...
单片机之静态局部变量static
上程序:main.c#include #include "Timer.h"/********P1口低有效******************/void main(void){init();//中断初始化while(1){}}Timer.h#ifndef _TIMER_H_#define _TIMER_H_extern void init(void);#endifTime...
单片机c语言教程:C51循环语句
我们能知道这 1000 条空语句, 无非就是一条空语句重复执行 1000 次,因此我们就能用循环语句去写,这样不但使程序结构清晰明了,而且使其编译的效率大大的提高。在 C 语言中构成循环控制的语句有 while,do-while,for 和 got...
51单片机产生1Hz-5kHz可调占空比方波
学校的课程设计,总结一下。注意1.高低电平的改变不适合在主函数的while循环中,因为要有数码管动态显示的延时和其它逻辑处理,时间太长会不能及时改变高低电平值。2.中断的执行时间一定是不能超过定时时间的,不然就会中断...
51系列单片机采用脉冲宽度调制(PWM)
程序中使用定时器0产生2.5ms周期脉冲,使用占空比控制变量scale控制占空比,在低电平期间使LED灯亮,在高电平期间使LED灯灭,改变scale就改变了高电平与低电平的时间,因此也就控制了LED灯的亮度。#include "AT89X51.H" //模...
如何优化单片机中的C程序
1、选择合适的算法和数据结构 应该熟悉算法语言,知道各种算法的优缺点,具体资料请参见相应的参考资料,有很多计算机书籍上都有介绍。将比较慢的顺序查找法用较快的二分查找或乱序查找法代替,插入排序或冒泡排序法用快速排...
单片机中的ms级软定时器
timer.h#ifndef __SOFT_TIMER_H__ #define __SOFT_TIMER_H__#define EVENT_TYPE_ONESHOT 0 #define EVENT_TYPE_PERIODIC 1#define TMR_POOL_SIZE 20 #define HANDLE inttypedef void (*TimerProc)(void*);void T...
AVR单片机中的EEPROM
1.EEPROM介绍Electrically Erasable Programmable Read Only Memory电气可拭除可编程只读存储器发展过程:ROM – > PROM –> EPROM –> EEPROM2.EEPROM和FLASH的区别2.1 使用上的区别FLASH用于存放程序...
搞定单片机多字节串口接收
串口接收程序是基于串口中断的,单片机的串口每次接收到一字节数据产生一次中断,然后再读取某个寄存器就可以得到串口接收的数据了。然而在实际应用当中,基本上不会有单字节接收的情况。一般都是基于一定串口通信协议的多...
pic单片机链接描述文件(.lkr)含义
结合18f4620.lkr来说明链接描述文件中代码的含义//$Id:18f4620.lkr,v1.32004/04/2618:09:00curtissExp$//File:18f4620.lkr//SamplelinkerscriptforthePIC18F4620processor//将当前目录library/object搜索路径,.代表当...
单片机快速开平方的算法
算法1:本算法只采用移位、加减法、判断和循环实现,因为它不需要浮点运算,也不需要乘除运算,因此可以很方便地运用到各种芯片上去。我们先来看看10进制下是如何手工计算开方的。先看下面两个算式,x=10*p+q(1)公式(1)左右平...
单片机掉电模式与空闲模式
1.空闲模式当单片机进入空闲模式时,除CPU处于休眠状态外,其余硬件全部处于活动状态,芯片中程序未涉及到的数据存储器和特殊功能寄存器中的数据在空闲模式期间都将保持原值。但假若定时器正在运行,那么计数器寄存器中的值...
ucosii在AVR系列单片机移植中出现的一个BT的问题
症状:编译通过后,运行时卡死。经在AVR Studio中JTAG硬仿真,发现任务调度不了。最终目光聚焦在移植代码里函数中的一行:tmp = *(INT16U const *)task; /* (1) ICC compiler handles function pointers indirectly! */...
单片机中用c编程时头文件reg51.h及reg52.h解析
1)“文件包含”处理。程序的第一行是一个“文件包含”处理。所谓“文件包含”是指一个文件将另外一个文件的内容全部包含进来。程序中包含REG51.h文件的目的是为了要使用P1 (还有其他更...
MSP430中断嵌套问题
不能用51单片机的中断机制来套用MSP430的中断模式。当MSP430有多个中断请求发生时,响应最高优先级(优先级共有16级)的中断。响应中断时,MSP430会将不可屏蔽中断控制位SR.GIE复位,即关闭全局中断。因此,一旦MSP430响应了中...
ISP与IAP的区别
ISP(In-SystemProgramming)在系统可编程,指电路板上的空白器件可以编程写入最终用户代码,而不需要从电路板上取下器件,已经编程的器件也可以用ISP方式擦除或再编程。IAP(In-ApplicationProgramming)指MCU可以在系统中获取新...
为mspdebug的prog命令添加烧写uuid序列号的功能
msp430系列单片机是不包含唯一序列号的,想用?Sorry,自己烧写到flash里面去!虽然这个功能使用mspdebug的mw命令很容易实现,可难道每烧写一块单片机都要执行一次uuidgen命令,然后将序列号粘贴在mw命令里,uuidgen的输出还得分割...
51单片机串口通信例子
发送例子:#include#includevoid delay(unsigned int i);char code message[]="welcome";unsigned char a;void main(void){SCON=0x50; //REN=1 ,串口工作模式2;TMOD=0x20; //定时器工作方式2;PCON=0x80;TH1=0xCC;...
PIC中档单片机汇编指令详解
NOP 空操作指令语法形式:NOP操作数:无执行时间:一个指令周期执行过程:除了消耗一个指令周期之外,无任何其他影响,所以通常被用来作为延时使用状态标志影响:无说明:指令操作没有任何操作数参与,也不影响任何寄存器的内容和状态,...
单片机数字秒表计时器编写
代码如下:#include#define uchar unsigned charsbit s0=P1^0;sbit s1=P1^1;sbit s2=P1^2;sbit s3=P1^3; //数码管的位选uchar table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0~9的数码管段码uchar...
FPGA为什么跑不快
以Quartus为例(延时数据为Stratix III器件典型延时)手动布局:module top(input clk,din,output dout);[cpp]view plaincopyprint?regdin_ff,din_ff2; always@(posedgeclk)begindin_ff<=din;din_ff2<=din_ff;endassigndou...
单片机C语言下LCD多级菜单的一种实现方法
0 引言 由于C 语言的结构性和模块化,采用C 语言编写的程序容易阅读和维护,还有很好的可移植性。本文介绍一种用C 语言实现的LCD 多级菜单的方法,该方法已成功应用在煤矿安全监测设备上。1 硬件环境及LCD 菜单实现的功...
51单片机中使用ucos ii的优缺点
引言早在20世纪60年代,就已经有人开始研究和开发嵌入式操作系统。但直到最近,它才在国内被越来越多的提及,在通信、电子、自动化等需要实时处理的领 域所曰益显现的重要性吸引了人们越来越多的注意力。但是,人们所谈论的...
51单片机寄存器组的设置
首先介绍一下51的寄存器组:通过设置PSW寄存器的第3位和第4位可以任意切换寄存器组。在进入中断前,切换寄存器组,可以方便的保护原寄存器组的数据不被中断里的语句破坏,很方便。RS1 RS0 字节地址0 0 0组寄...
只要单片机具有真正唯一ID,就可以让加密坚不可摧
第一环:ID-->F1(ID) -----》IDX,将ID通过自定义的一个算法F1,转换为一个整数IDX , F1为不可逆运算,也不能被轻易分析,这个实际上是容易实现的。然后,将IDX保存到EEPROM或FLASH的任何地方,我们通过编一个函数 GET_IDX()能够读出这...
建立一个属于自己的AVR的RTOS(第一篇:函数的运行)
例子如下:makefile的设定:运行WinAvr中的Mfile,设定如下MCUType:mega8Optimizationlevel:sDebugformat:AVR-COFFC/C++sourcefile:选译要编译的C文件#includevoidfun1(void){unsignedchari=0;while(1){PORTB=i++;PORTC=...
建立一个属于自己的AVR的RTOS(第二篇:人工堆栈)
第二篇:人工堆栈在单片机的指令集中,一类指令是专门与堆栈和PC指针打道的,它们是rcall相对调用子程序指令icall间接调用子程序指令ret子程序返回指令reti中断返回指令对于ret和reti,它们都可以将堆栈栈顶的两个字节被弹出...
建立一个属于自己的AVR的RTOS(第三篇:GCC)
第三篇:GCC中对寄存器的分配与使用在很多用于AVR的RTOS中,都会有任务调度时,插入以下的语句:入栈:__asm____volatile__("PUSHR0\t");__asm____volatile__("PUSHR1\t");......__asm____volatile__("PUSHR31\t");出...
建立一个属于自己的AVR的RTOS(第四篇:延时服务)
第四篇:只有延时服务的协作式的内核 CooperativeMultitasking前后台系统,协作式内核系统,与占先式内核系统,有什么不同呢?记得在以前看过这样的比喻,“你(小工)在用厕所,经理在外面排第一,老板在外面排第二。如果是前后...
建立一个属于自己的AVR的RTOS(第五篇: 内核)
第五篇:完善的协作式的内核现在为上面的协作式内核添加一些OS中所必须的服务:1挂起和重新运行任务2信号量(在必要时候,可以扩展成邮箱和信息队列)3延时#include#include#includeunsignedcharStack[400];registerunsigned...
建立一个属于自己的AVR的RTOS(第六篇:调度法)
第六篇:时间片轮番调度法的内核 时间片轮调法是非常有趣的。本篇中的例子,建立了3个任务,任务没有优先级,在时间中断的调度下,每个任务都轮流运行相同的时间。如果在内核中没有加入其它服务,感觉上就好像是有三...
建立一个属于自己的AVR的RTOS(第七篇:占先式内核)
第七篇:占先式内核(只带延时服务)当大家理解时间片轮番调度法的任务调度方式后,占先式的内核的原理,已经伸手可及了。先想想,占先式内核是在什么地方实现任务调度的呢?对了,它在可以在任务中进行调度,这个在协作式的内核中...
建立一个属于自己的AVR的RTOS(第八篇:完善的服务)
第八篇:占先式内核(完善的服务)如果将前面所提到的占先式内核和协作式内核组合在一起,很容易就可以得到一个功能较为完善的占先式内核,它的功能有:1,挂起和恢复任务2,任务延时3,信号量(包括共享型和独占型)另外,在本例中,...
STM32 对内部FLASH读写接口函数
原理:先要把整页FLASH的内容搬到RAM中,然后在RAM中改动,然后擦除整页FLASH,再把改动后的内容写入原Flash页。下面程序调试通过。/******************************************************************************** Fun...
单片机其他外围设备的使用
蜂鸣器的使用:蜂鸣器粗略设定频率,以20ms即50hz发声#include#define uint unsigned int#define uchar unsigned charsbit fen = P2^6;void delay(uint z);main(){while(1){delay(1);//延时10毫秒注意这里输出的是20毫秒...
STC12C5A60S2单片机串口调试
用户在程序中如何具体使用串口1和独立波特率发生器BRT1、设置串口1的工作模式,SCON寄存器中的SM0和SM1决定串口1 的4中工作模式2、设置串口1的波特率,使用独立波特率发生器寄存器和相应的位;BRT,BRTx12位,SMOD位3、启动独...
单片机系统设计中的硬件抗干扰
在研制带处理器的电子产品时,如何提高抗干扰能力和电磁兼容性?一、下面的一些系统要特别注意抗电磁干扰:1、微控制器时钟频率特别高,总线周期特别快的系统。2、系统含有大功率,大电流驱动电路,如产生火花的继电器,大电流开关...
关于使用c8051fxxx单片机用户常见疑问如下
1.振荡器问:内部时钟振荡器是不是不稳定?是否可以用于产生波特率的时基?答:不同器件的内部时钟振荡器的精度是不同的(±20%)。随电源电压变化,它也将发生变化(6.5%/V)。但基本不随温度变化(<1%温度变化范围-40-+85℃)。...
苦B的光耦-RS485调试过程
本案例RS485调试时当低波特率时,通讯还算良好,基本没有发现什么错误(由于时间有限,未做超过两小时的通讯测试),当达到115200bps时,有较大的通讯故障概率,有些板件甚至无法正常通讯。案例详细描述:隔离电源隔离电源IB0505LS-1W,...
CMOS Sensor的调试经验
这两种各有优劣:目前CCD主要使用高质量的DC、DV和高档手机上,其图像质量较好,但是整个驱动模组相对比较复杂,而且目前只有曰本一些企业掌握其生产技术,对于选用的厂商来说成本会比较高昂,而且一些设备对与图像质量没有很苛...
51单片机模拟I2C总线的C语言实现
例如管理员可对各个组件进行查询,以 管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。一、I2C总线特点 I2C总线最主要的优点...
单片机中ROM、RAM、Flash的区别
譬如说,现在家用的电子式电度表,它的内核是一款单片机,该单片机的程序就是存放在ROM里的。电度表在工作过程中,是要运算数据的,要采集电压和电流,并根据电压和电流计算出电度来。电压和电流时一个适时的数据,用户不关心,它只...
I2C,SPI,UART和CAN等常见通信协议的区别
I2C--INTER-IC(INTER IC BUS:意为IC之间总线)串行总线的缩写,是PHILIPS公司推出的芯片间串行传输总线。它以1根串行数据线(SDA)和1根串行时钟线(SCL)实现了双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信...
单片机硬件抗干扰经验
一、下面的一些系统要特别注意抗电磁干扰:1、微控制器时钟频率特别高,总线周期特别快的系统。2、系统含有大功率,大电流驱动电路,如产生火花的继电器,大电流开关等。3、含微弱模拟信号电路以及高精度A/D变换电路的系统。二...
单片机中时延函数易常范的错误
如我所编AD转换程序中,在转换时间要长达30ms时才能有有效的数据输出。如果时间过短,则不会起到即时的效果。unsigned char 最大值为255再大就要用循环了。下面是原码:#include#includesbit wr = P3^6;sbit rd = P3^7;sbi...
关于51单片机电子时钟精度的问题
这可了不得,十分钟就要慢40秒,一天下来不得慢半96分钟!!!这个单片机晶振频率为11.0592mhz,和大部分时钟的晶振频率相同,应该没有问题。后天考虑到源代码:在定时器中断函数里:void t0(void) interrupt 1 using 0 { tcount++; ...
Modelsim_Altera_SE编译出错
# Reading D:/altera/13.0/modelsim_ase/tcl/vsim/pref.tcl# ERROR: No extended dataflow license exists# do ceshi_run_msim_rtl_verilog.do# if {[file exists rtl_work]} {#vdel -lib rtl_work -all# }# v...
QuartusII警告信息解析
1.Found clock-sensitive change during activeclockedge at time on register ""原因:vector sourcefile中时钟敏感信号(如:数据,允许端,清零,同步加载等)在时钟的边缘同时变化。而时钟敏感信号是不能在时钟边沿变化的。...
单片机中断函数的编写
interruptm修饰符C51中断函数必须通过该修饰符进行修饰。在C51程序设计中,当函数定义时用了interruptm修饰符,系统编译时把对应函数转化为中断函数,自动加上程序头段和尾段,并按51系统中断的处理方式自动把它安排在程序存...
W77E58在GPS远程定位的应用(源代码)
硬件要求: GPS模块、GSM短信模块(TC35/TC35i)或者兼容AT指令的其他模块、W77E58单片机(或者具备双串口的单片机)/*说明:Winbond W77E58 双串口单片机串口0 采用9600波特率串口1 采用4800波特率*/#include "w77e58.h"#include "...
一步步写STM32 OS【一】 序言
好了,要写一个OS,首先需要一个开发板和仿真器。我的开发板是STM32F4DISCOVERY,自带ST-LINK V2仿真器,板载MCU为STM32F407VGT6,支持FPU,32位ARM Cortex-M4F核,1024KB FLASH,192 KB RAM,总之很强大。对STM32其他系列,本OS几乎不...
MSP430单片机存储器结构总结
典型微型计算机的存储器都是采用冯•诺依曼结构,也称普林斯顿结构,即存放程序指令的存储器——程序存储器和存放数据的存储器——数据存储器采取统一的地址编码结构。程序存储器与数据存储器分...
不一样的51单片机学习教程
不一样的51 教程概念若干:数字?它是什么?它能干什么写在前面一直以来,我都不太当那些什么教程是教程,经常只是当成一种资料。而我也从来没有看过什么视频教程,一个是网速太渣,下起来太浪费表情。另一个是我更喜欢看书。请不...
单片机到底是什么呢?
单片机是什么?也许你听的耳朵已经起了茧,无数的书无数的人告诉我们,单片机其实跟我们的电脑是一样的,只不过它简单很多!——可以说这样的话是废话:我最初就不知道其实我们的电脑是什么,我除了知道可以用它打字,看电...
单片机在大功率功放电路中的应用
大功率功放使用电子元器件是非线性的,这会引起功率放大器的非线性失真。为保证音质,必须改善非线性失真。另外,大功率输出管和扬声器很容易烧坏,烧坏原因主要有:扬声器短路、输出较长时间的直流电流或输出削波失真。传统的...
单片机各个引脚的功能
单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。⒈ 电源: ⑴ VCC - 芯片电源,接+5V; ⑵ VSS - 接地端; ⒉时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。⒊控制线:控制线共有4根, ⑴ ALE/PROG:地...
单片机上的按键检测框架
下面是我之前写的一个按键检测的框架,适合比较多的按键操作,从信号接收、滤波、最好处理按键任务,大体上没什么问题,不过没具体测试过到时可能会有bug。1 /************************************************************...
用DMA实现多路ADC通道数据采集
找了不少例子参考,ADC和DMA的设置了解了个大概,并直接利用开发板来做一些实验来验证相关的操作,保证自己对各部分设置的理解。我这里用了3路的ADC通道,1路外部变阻器输入,另外两路是内部的温度采样和Vrefint,这样就能组成连...
ADC的规则通道和注入通道混合使用
文档关于注入通道的解释:1 利用外部触发或通过设置ADC_CR2寄存器的ADON位,启动一组规则通道的转换。 2 如果在规则通道转换期间产生一外部注入触发,当前转换被复位,注入通道序列被以单次扫描方式进行转换。 3 ...
实现STM32的串口数据发送和printf函数重定向
对于STM32来说,由于很多内容都是有库来实现的,那就省了很多时间,直接看个例子就可以写了,大致有4步步骤:1 1、RCC始终初始化,对端口和USARTX使能时钟2 2、初始化端口功能,RX设置为输入悬空,TX设置为复用功能的推挽输出,注意GPI...
用TIM1产生6路ADC,用CCR4触发ADC1的注入通道采样
这几天一直在测试PWM,CCR4的中断,ADC1的采样触发+DMA等功能,现在也了解的差不多了,先记录下来,先看下我的一些设置,TIM1设置:1 /* Time Base configuration ,init time1 freq*/2 TIM_TimeBaseStructure.TIM_Period = P...
什么时候应该避免写代码注释?
还不相信?那让我告诉你:写注释有时会坏事!会导致坏代码!请允许我用一句名言来开始我的论证:不要注释坏代码——重写吧。——Brian W. Kernighan and P. J. Plaugher这句话给我流下了非常深刻的印象。...
单片机控制GSM模块
随着移动通信的发展,手机在人们的生活中变得越来越普及,对人们的生活的影响越来越大。使用移动通信网络的SMS(短消息)/GPRS(通用分组无线业务)工业模块(即手机模块)在工业现场使用的越来越广泛,尤其是在远程监控领域更是得到了...
STC单片机内部EEPROM的应用
单片机运行时的数据都存在于RAM(随机存储器)中,在掉电后RAM 中的数据是无法保留的,那么怎样使数据在掉电后不丢失呢?这就需要使用EEPROM 或FLASHROM 等存储器来实现。在传统的单片机系统中,一般是在片外扩展存储器,单片机与...
51单片机PID的算法实现程序
用整型变量来实现PID算法,由于是用整型数来做的,所以也不是很精确,但是对于很多的使用场合,这个精度也够了,关于系数和采样电压全部是放大10倍处理的.所以精度不是很高.但是也不是那么低,大部分的场合都够了.实在觉得精...
STC89C51单片机EEPROM读写例程
//============================================================================//prjname:STC89C51RC,STC89C52RC,STC89C54RD+EEPROM例程//funtion:程序实现P0口,P1口分别驱动LED灯(低电平亮)把两个8位变量count....
51单片机解决调试过程
对于一个新设计的电路板,调试起来往往会遇到一些困难,特别是当板比较大、元件比较多时,往往无从下手。但如果掌握好一套合理的调试方法,调试起来将会事半功倍。对于刚拿回来的新PCB板,我们首先要大概观察一下,板上是否存在...
STC单片机的EEPROM使用心得
STC单片机利用IAP技术实现了EEPROM功能,相比外置存储芯片而言,在操作上比较方便。涉及STC单片机EEPROM操作的特殊功能寄存器有6个,地址分别是E2H、E3H、E4H、E5H、E6H和E7H。在STC单片机使用手册中,作者分别将它们定义为:...
密封等级IP知识全攻略
IP是Ingress Protection的缩写,IP等级是针对电气设备外壳对异物侵入的防护等级,来源是国际电工委员会的标准IEC 60529,这个标准在2004年也被采用为美国国家标准。 在这个标准中,针对电气设备外壳对异物的防护,IP等级的格式...
单片机控制开关电源
单片机控制开关电源,单从对电源输出的控制来说,可以有几种控制方式。其一是单片机输出一个电压(经DA芯片或PWM方式),用作电源的基准电压。这种方式仅仅是用单片机代替了原来的基准电压,可以用按键输入电源的输出电压值,单片...
PIC单片机数据存储的问题
遇到的问题:定义了一个无符号整形的数组,数组中某个元素的低字节在0X01FF,高字节在0X0200,因此出现了错误;解决的方案:重新把定义的变量的顺序规范了一下,高效利用了数据存储空间,同时也该数组的地址也变了,其他变量也都没有跨...
EMC8BIT单片机指令应用的误区与技巧
1.减法指令的误区 之一:关于ACCEMC的减法指令有三条,如下: SUB A,R (R-A→A) SUB R,A (R-A→R) SUB A,K (K-A→A) 需要注意的是,不论A的位置在前面还是后面,A都是减数,不是被减数.也就是說如果我們想計算...
编制单片机应用程序的步骤和难点
1.前言如何编写单片机应用程序,这是一个实践性很强的题目,也是1项艰苦而细致的工作。如果按照一定的步骤并且找出难点,事先对这些难点加以处理,能够收到事半功倍的效果。下面根据实际工作中的经验,谈谈实际开发中必经的几...
基于51单片机智能计数器的设计
任务以及要求 对外部信号脉冲进行计数,并将脉冲个数显示出来。基本要求:计数至少65536个脉冲,并将脉冲个数显示出来。 二、方案选择 用中断方式进行计数,利用定时器/计数器0的方式2。使用查寻方式进行计数,利用定时器/计数...
完全释放CPU按键消抖程序
功能:不需要按键延时等待消抖程序,检测到按键按下,屏蔽抖动,马上执行按键功能程序,不会误动作,即按键按一次,不管时间多长,都动作一次#include //包含单片机寄存器的头文件sbit S=P3^2; //将S位定义为P3.2,外部中...
单片机怎么入门?
怎么入门?如何学好单片机?此类问题估计初学者或单片机刚入门者都想知道的吧。本文就针对这些问题再谈单片机学习方法,希望对初学者有所帮助。运用单片机首先得理解单片机的硬件结构,以及内部资源,在汇编或C语言中学会各种...
PIC单片机控制时钟芯片DS1302汇编程序
#INCLUDECBLOCK 20HSEC ;秒MIN ;分HOU ;小时DATE ;日期MON ;月DAY ;日YERR ;年DDD ;写使能位TIME_TX ;1302发送寄存器TIME_RX ;1302接收寄存器COUNT1 ;COUNT2 ;DELAY1DELAY2ENDC*******************************; ; 1...
PIC8位单片机汇编语言常用指令的识读
各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是...