对应程序: #include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar code tab[]={ 0x81, 0x42, 0x24, 0x18, }; void delay(uint z) { uint i,j; for(i=z;i>0;i--) for(j=120;j>0;j--); } void init() { P0=0x00; }
上传时间: 2014-01-17
上传用户:ruan2570406
第五章 Keil C51库函数参考 C51强大功能及其高效率的重要体现之一在于其丰富的可直接调用的库函数,多使用库函数使程序代码简单,结构清晰,易于调试和维护,下面介绍C51的库函数系统。 1. 第一节 本征库函数(intrinsic routines)和非本征证库函数 C51提供的本征函数是指编译时直接将固定的代码插入当前行,而不是用ACALL和LCALL语句来实现,这样就大大提供了函数访问的效率,而非本征函数则必须由ACALL及LCALL调用。 C51的本征库函数只有9个,数目虽少,但都非常有用,列如下: _crol_,_cror_:将char型变量循环向左(右)移动指定位数后返回 _iror_,_irol_:将int型变量循环向左(右)移动指定位数后返回 _lrol_,_lror_:将long型变量循环向左(右)移动指定位数后返回 _nop_: 相当于插入NOP _testbit_: 相当于JBC bitvar测试该位变量并跳转同时清除。 _chkfloat_: 测试并返回源点数状态。 使用时,必须包含#inclucle 一行。 如不说明,下面谈到的库函数均指非本征库函数
上传时间: 2013-10-19
上传用户:1184599859
假定从8位AD中读取数据(如果是更高位的AD可定义数据类型为int),子程序为get_ad(); 1、限幅滤波法(又称程序判断滤波法) A、方法: 根据经验判断,确定两次采样允许的最大偏差值(设为A) 每次检测到新值时判断: 如果本次值与上次值之差<=A,则本次值有效 如果本次值与上次值之差>A,则本次值无效,放弃本次值,用上次值代替本次值 B、优点: 能有效克服因偶然因素引起的脉冲干扰 C、缺点 无法抑制那种周期性的干扰 平滑度差 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */ #define A 10 char value; char filter() { char new_value; new_value = get_ad(); if ( ( new_value - value > A ) || ( value - new_value > A ) return value; return new_value; } 2、中位值滤波法 A、方法: 连续采样N次(N取奇数) 把N次采样值按大小排列 取中间值为本次有效值 B、优点: 能有效克服因偶然因素引起的波动干扰 对温度、液位的变化缓慢的被测参数有良好的滤波效果 C、缺点: 对流量、速度等快速变化的参数不宜 /* N值可根据实际情况调整 排序采用冒泡法*/
上传时间: 2014-12-26
上传用户:nanshan
#ifndef __485_C__ #define __485_C__ #include #include #define unsigned char uchar #define unsigned int uint /* 通信命令 */ #define __ACTIVE_ 0x01 // 主机询问从机是否存在 #define __GETDATA_ 0x02 // 主机发送读设备请求 #define __OK_ 0x03 // 从机应答 #define __STATUS_ 0x04 // 从机发送设备状态信息 #define __MAXSIZE 0x08 // 缓冲区长度 #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错 uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息 uchar dev; // 该字节用于保存本机设备号 sbit M_DE = P1^0; // 驱动器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效
上传时间: 2014-12-26
上传用户:604759954
概述 BL22P02是一款低功耗8位OTP型微控制器单元(MCU),适用于各类小家电控制。 主要特点 8位CISC结构CPU(Motorola HC05兼容)17个通用IO口8位实时定时器/计数器,其信号源和触发沿可由软件设定,可设置溢出中断7路键盘中断(KBI)2路外中断(INT)振荡模式晶振:32K晶振:432K-8MHz内部RC:2MHz@5V、4MHz@5V、6MHz@5V外接电阻低功耗设计(静态功耗<1uA@5V)内部自振式看门狗计数器(WDT)64byteRAM2K*8bitOTPROM串行烧写接口电路程序加密功能工作电压2.0-5.5V@(432K-4M)2.7-5.5V@(432K-8M)封装形式:DIP20、SOP20、DIP18、SOP18、DIP16、SOP16、DIP14、SOP14、DIP8、SOP8
上传时间: 2013-10-15
上传用户:佳期如梦
/通过DS18B20测试当前环境温度, 并通过数码管显示当前温度值, 目前显示范围: 0.0~ +99.9度 #include #include #define uchar unsigned char #define uint unsigned int #define DATAPORT P0 //定义P0口为Led数据口 //#define SETTEMP P1 //定义P1口为设定温度 #define SELECT P2 //定义P2口为选择信号 sbit L1 = P1^1; //灯作为电机 sbit L2 = P1^2; sbit L3 = P1^3;
上传时间: 2013-11-04
上传用户:liulinshan2010
8SH702&703用户接口电路 概述:SHL7038是本公司于2005年在60系列产品(SHL6014和SHR6024)、70系列产品(SHL703和SHR702)基础上设计的一种同时具备8路用户接口(选用2片SHL6014,等同于8路SHL703)或者8路中继接口(选用2片SHR6024,等同于8路SHR702)或者4路用户接口加4路中继接口(选用1片SHL6014加1片SHR6024,,等同于4路SHL703加4路SHR702)的通用接口模板; 其中的用户接口性能指标描述详见SHL6014资料介绍(附后); 其中的中继接口性能指标描述详见SHR6024资料介绍(附后); 阻抗可调整; 100mm * 64mm * 6mm MAX拔插式结构,体积超小,使用方便。 特别适用于语音卡、调度机、交换机、环路终端等既要求密度高、又要求拔插方便、尤其希望能灵活变更模块类型的场合。 单电源供电。
上传时间: 2013-10-17
上传用户:haoxiyizhong
Quartus II 中文教程 您现在阅读的是 Quartus II 简介手册。 Altera® Quartus® II 设计软件是适合单芯片可编程系统 (SOPC) 的最全面的设计环境。 如果您以前用过MAX+PLUS® II 软件、其它设计软件或 ASIC 设计软件,并且准备改用Quartus II 软件,或如果您对 Quartus II 软件有了一些了解但想进一步了解它的功能,那么本手册非常适合您。本手册针对的读者是 Quartus II 软件的初学者,它概述了可编程逻辑设计中Quartus II 软件的功能。 不过,本手册并不是 Quartus II 软件的详尽参考手册。 相反,本手册只是一本指导书,它解释软件的功能以及显示这些功能如何帮助您进行 FPGA 和 CPLD 设计。 本手册按一系列特定的可编程逻辑设计任务来组织内容。 无论是使用 Quartus II 图形用户界面、其它 EDA 工具还是 Quartus II 命令行界面,本手册都将为您介绍最适合设计流程的功能。第一章概述了主要图形用户界面、EDA 工具和命令行界面设计流程。 接下来的每一章开头都介绍了该章的具体用途,并对每个任务流加以概述。 它显示了如何将 Quartus II 软件与现有的 EDA 工具和命令行设计流程集成在一起。另外,手册还向您推荐了有效使用 Quartus II 软件的其它可用资源,例如Quartus II 联机帮助和 Quartus II 联机教程、应用程序说明、白皮书以及Altera 网站提供的其它文档和资源。跟随本手册学习 Quartus II 软件,了解此软件如何帮助您提高效率并缩短设计周期,如何与现有可编程逻辑设计流程集成以及如何快速有效地达到设计、性能和时间要求。
上传时间: 2013-12-22
上传用户:panpanpan
C51 中的关键字关键字 用途 说明auto 存储种类说明 用以说明局部变量,缺省值为此break 程序语句 退出最内层循环case 程序语句 Switch 语句中的选择项char 数据类型说明 单字节整型数或字符型数据const 存储类型说明 在程序执行过程中不可更改的常量值continue 程序语句 转向下一次循环default 程序语句 Switch 语句中的失败选择项do 程序语句 构成do..while 循环结构double 数据类型说明 双精度浮点数else 程序语句 构成if..else 选择结构enum 数据类型说明 枚举extern 存储种类说明 在其他程序模块中说明了的全局变量flost 数据类型说明 单精度浮点数for 程序语句 构成for 循环结构goto 程序语句 构成goto 转移结构if 程序语句 构成if..else 选择结构int 数据类型说明 基本整型数long 数据类型说明 长整型数register 存储种类说明 使用CPU 内部寄存的变量return 程序语句 函数返回short 数据类型说明 短整型数signed 数据类型说明 有符号数,二进制数据的最高位为符号位sizeof 运算符 计算表达式或数据类型的字节数static 存储种类说明 静态变量struct 数据类型说明 结构类型数据swicth 程序语句 构成switch 选择结构typedef 数据类型说明 重新进行数据类型定义union 数据类型说明 联合类型数据unsigned 数据类型说明 无符号数数据void 数据类型说明 无类型数据volatile 数据类型说明 该变量在程序执行中可被隐含地改变while 程序语句 构成while 和do..while 循环结构ANSIC 标准关键字关键字 用途 说明bit 位标量声明 声明一个位标量或位类型的函数sbit 位标量声明 声明一个可位寻址变量
标签: C51
上传时间: 2013-10-08
上传用户:waves_0801
AT89C2051驱动步进电机的电路和源码:AT89C2051驱动步进电机的电路和源码 程序:stepper.c stepper.hex/* * STEPPER.C * sweeping stepper's rotor cw and cww 400 steps * Copyright (c) 1999 by W.Sirichote */#i nclude c:\mc5151io.h /* include i/o header file */ #i nclude c:\mc5151reg.hregister unsigned char j,flag1,temp; register unsigned int cw_n,ccw_n;unsigned char step[8]={0x80,0xc0,0x40,0x60,0x20,0x30,0x10,0x90} #define n 400/* flag1 mask byte 0x01 run cw() 0x02 run ccw() */main(){ flag1=0; serinit(9600); disable(); /* no need timer interrupt */ cw_n = n; /* initial step number for cw */ flag1 |=0x01; /* initial enable cw() */while(1){ { tick_wait(); /* wait for 10ms elapsed */energize(); /* round-robin execution the following tasks every 10ms */ cw(); ccw(); } }}cw(){ if((flag1&0x01)!=0) { cw_n--; /* decrement cw step number */ if (cw_n !=0) j++; /* if not zero increment index j */ else {flag1&=~0x01; /* disable cw() execution */ ccw_n = n; /* reload step number to ccw counter */ flag1 |=0x02; /* enable cww() execution */ } }
上传时间: 2013-11-21
上传用户:boyaboy