假定从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
//CM3 有 最多240个中断(通常外部中断写作IRQs),就是 软件上说的 IRQ CHANAELx(中断通道号x) 每个中断有自己的可编程的中断优先级【 有唯一对应的 中断优先级寄存器 】. 由于CM3支持 硬件中断嵌套,所以可以有 256 级的可编程优先级 和 256级中断嵌套【 书上称:抢占(preempt) 优先级】 所以大家可以设: IRQ CHANAEL 0 通道 = 2 中断优先级WWDG 窗口定时器中断 IRQ CHANAEL 1 通道 = 0 中断优先级PVD 联到EXTI的电源电压检测(PVD)中断 IRQ CHANAEL 3 通道 = 255 中断优先级RTC 实时时钟(RTC)全局中断 IRQ CHANAEL 6 通道 = 10 中断优先级EXTI0 EXTI线0中断 ..... IRQ CHANAEL 239 通道 = (0<x<255) 中断优先级..
上传时间: 2013-10-28
上传用户:redherr
1.UART增加2个新的特性,即帧错误检测和多机通信中的从机地址自动识别。(1)帧错误检测可用于UART检查工作方式1、2和3时的停止位。例如,由于UART通信线路上的噪声或者2个MCU同时发送可能引起停止位的丢失。(2)多机通信中的从机地址自动识别功能即是说只允许该地址从机被硬件中断,而不是由软件进行地址比较的,那么自动地址识别可以减少为UART服务所需要的MCU时间。与此同时使用广播地址可以一次寻址所有的从处理器。2.4个中断优先级:IPH和IP结合使用决定了每个中断的优先级,00、01、10、11的排列依次由低到高组成4级中断优先权。3.双DPTR指针:可用于寻址外部数据存储器。通过对AUCR1的DPS位编程,以实现对2个16位DPTR寄存器的切换。4.将AUXR.0置位,禁止ALE的信号输出,从而达到降低单片机本身的EMI电磁干扰。
上传时间: 2013-10-23
上传用户:hj_18
一 实验目的: 1. 了解单片机的用途,增加感性认识,激发学习微机原理这门课的兴趣 2. 对单片机不同型号和种类有一定的了解,抓住内在规律学好微机原理这门课 二 实验内容: 1. 观看单片机控制演示实验 a) 单片机控制红绿灯 b) 单片机控制软驱步进电机 c) 单片机演奏音乐 d) 单片机调速步进马达 2. 通过CAI软件了解单片机不同型号和种类 三 实验报告: 1. 到图书馆或网站查找不同种类的单片机(至少写出与CAI课件不同的五种型 号) 2. 你认为单片机用途大吗?对该课程有兴趣吗?打算怎样学习这门课?
上传时间: 2014-12-27
上传用户:
AVR mega128开发板 联系 杨迪 15336417867 0531-55508458 QQ:1347978253 http://www.easyele.cn 产品概述:AVR mega128开发板是AVRVi开发的基于Atmega128单片机的综合学习开发系统,板载学习资源,集成JTAG仿真器和ISP下载功能,核心板可拆卸独立使用,是你学习AVR单片机,参加各类电子设计竞赛,快速搭建产品的不二选择。AVR mega128开发板亦可以作为单片机培训,高校实验室,课程设计等的实验器材。为了更好的支持客户的学习和开发,此开发板板通讯接口升级为USB接口,方便计算机没有串口的朋友,学习起来更加简捷。货号:EasyAVRM128SK-A 规格: 套 重量:300克 单价498/套。 参数特色: 1.采用核心板和主板分离的形式,在系统的学习之后,可以把核心板直接用于产品中,快速搭建系统。 2.开发板上集成了AVR JTAG ICE仿真器和AVR ISP编程器,超高性价比。 3.您只需要再拥有一台计算机,而不需要购买仿真器和编程器就可以学习开发了。 4.信号调理电路,输入0~10V,轨至轨信号调理。 5.系统资源适中,性价比高。 6.丰富的学习资源,完善的产品支持。 7.EasyAVR教给你从开发环境建立,软件编译,到下载,传真,硬件设计等一系列电子工程师必备的技能,真正学以致用。 AVR mega128开发板板上资源: M128 所有引脚引出,可以利用杜邦头很方便的进行接插扩展,标准2.54针距,可以直接插在万用板上使用,便于进行实验 m128 DB Core 自带5V、3V3 双路电源稳压 m128 DB Core 外部晶振多种选择,既可以使用板上已经焊接好的14.7456M的晶振,也可以自己根据自己的需求扩展,晶振的切换通过跳线实现m128 DB Core 带有JTAG ISP 标准接口 m128 DB Core 自带一路标准RS232-TTL转换电路,方便实现串口通信 AVR mega128 开发板底板:板载JTAG 仿真器 板载STK500 下载内核 2路独立可调的信号调理电路,可控增益G=0.1-10 2路RS232 串行接口 1路RS485 接口 8 路LED 显示 4 位动态7 段数码管,利用74HC595进行驱动 4 位独立按键 板载IIC 总线PCF8563 实时钟芯片 板载IIC 总线EEPROM AT24c01 1 路有源蜂鸣器 1 路18B20 温度传感器接口,支持单总线器件。(12820可选:10元每个) 1602LCD 接口(送1602液晶) 12232、12864 LCD 接口(LCD12864可选:80元每个) 想找一份好工作吗? 你想成为一名电子设计工程师吗? 你对电子设计有浓厚兴趣,而没有工具吗? 看了很久的程序方面的书籍,却没有实践的机会吗? 需要开发产品,想快速入门? 想参加电子设计大赛,机器人大赛吗? 这个性价比高的专业工具是你的不二选择,它不仅仅是一个AVR mega128 开发板,他还是一个强大的开发工具,通过它进行学习后,对电子产品的设计有进一步的认知,建立起学习ARM,DSP,FPGA的良好基础。AVR mega128 开发板集成了AVR学习板,AVR开发板,AVR编程器,AVR仿真器,AVR核心板的功能,并且可以分开独立使用。 销售清单: 1、调试好的AVR mega128开发板一块(板载JTAG ISP 二合一,已经写入自检程序) 2、ATmega128核心板一块 3、USB供电线一条 4、标准串口(RS232)通讯线缆一条 5、资料光盘一张 6、使用说明书(实验讲义)一本 7、保修卡即订单清单一份 8、赠送LCD1602液晶一块
上传时间: 2013-11-10
上传用户:zm7516678
JTAG仿真器 mega16开发板 联系 杨迪 15336417867 0531-55508458 QQ:1347978253 http://www.easyele.cn 有了mega16开发板 JTAG仿真器就可以开始学习强大的AVR单片机,不用再单独买编程器,仿真器。本产品是AVRVI设计生产的AVR学习开发生产工具,以Atmega16为核心,集成AVR JTAG ICE仿真器和STK500 ISP编程器,用户只需要再拥有一台计算机即可进行系统的学习。同时mega16开发板器 JTAG仿真器还提供精致的说明书,让您事半功倍,深入了解单片机电路的设计,找到好工作没问题,详细介绍电路设计和如果学习开发等内容,即使不买板子也值得你收藏。mega16开发板 JTAG仿真器的货号:EasyAVR-M16 规格: 套 重量:400克。单价298/套 mega16开发板 JTAG仿真器开发板板载资源列表(部分): 1.1路有源蜂鸣器,也可接无源蜂鸣器 2.实时钟PCF8563 3.1IIC总线EEPROM AT24c01 4.1-wire单总线 5.晶振和复位电路 6.可选的有源晶振电路 7.AD电压调整电位器 8.电位器参考电压和待测电压调整 9.mega16开发板 JTAG仿真器拥有4个8位拨码开关 0.32Pin MCU外接端子 所有引脚标注 11.12864液晶接口 12.1602液晶接口 13.mega16开发板 JTAG仿真器有标准KF396尼龙接线端子 14.透明防滑硅胶脚垫 mega16开发板 JTAG仿真器的三个关键特点:开发板集成常用资源:LED、按键、七段数码管、RS232、LCD接口等;开发板上集成了AVR JTAG ICE仿真器和AVR ISP编程器;信号调理电路,输入0~10V,轨至轨信号调理。购买mega16开发板 JTAG仿真器是,我们会以优惠的价格提供给客户一些可选配件:18B20 10元;1602字符液晶 20元;12864 图形液晶带字库 80元;串口通讯线缆 5元;有源晶振 5元;杜邦头连线10条 5元,以上全配只需要加100元,如需要5V 小型步进电机另加20元。欢迎大家咨询选购。 开发板系列我公司还出售: mega128四合一开发板 498/套 ATMEL 原装 ATSTK500开发板 750/块 ATmega8 开发板 学习板 Mini Mega8 核心板 87/块 ATmega48 开发板 学习板 Mini Mega48 核心板 84/块 ATMega88 开发板 学习板 mini mega88 核心板 91/块 ATmega16 开发板 AVR学习板 Mega16 核心板 106/块 ATmega32 开发板 学习板 Mini M32 核心板 116/块 ATmega128 开发板 学习板 Mini M128 核心板 147/块 ATmega64 开发板 学习板 Mini M64 核心板 144/块
上传时间: 2013-10-19
上传用户:tou15837271233
2.4寸TFT 240370PQ 1.TFT电源:屏幕电源为2.8-3.3V;切记不能用5V; 2.本TFT兼容8/16位数据接口。切换方式通过排线上的R1,R2实现,0欧姆电阻短接R1为16位模式,短接R2为8位模式。默认发货短接R2,既默认为8位数据接口,8位模式下,使用高8位(即DB7-DB15); 3.数据口电平:理论上不能让数据口电平超过3.3V,如果一定要用5V的单片机IO连接数据总线,由于tft内部有电压钳位,用是可以用,不过始终是不规范的。做实验做样品测试可以,批量做产品的时候,为提高产品稳定性,最好还是想办法控制单片机的数据总线上的高电平电压为3.3V. (AVR的IO输出高电平能力强,TFT数据总线内部的电压钳位能力有限,使用AVR驱动的时候请务必使用3.3V给单片机供电.如果一定要使用5V供电的AVR,需要在数据线上使用两个电阻分压)
上传时间: 2013-10-26
上传用户:lanjisu111
MPLAB C18使用指南 简介本文档论述MPLAB® C18 编译器的技术细节,并讲解MPLAB C18 编译器的所有功能。 这里假定读者已经具备如下基本素质:• 知道如何编写C 程序• 知道如何使用MPLAB 集成开发环境创建和调试项目• 已经阅读并理解了所使用单片机的数据手册 文档内容编排如下:• 第1 章:简介 — 提供对MPLAB C18 编译器的概述以及有关调用编译器的信息。• 第2 章:语法说明 — 论述MPLAB C18 编译器与ANSI 标准的不同之处。• 第3 章:运行时模型 — 论述MPLAB C18 编译器如何利用 PIC18 PICmicro® 单片机的资源。• 第4 章:优化 — 论述MPLAB C18 编译器执行的优化功能。• 第5 章:示例应用程序 — 给出一个示例应用程序,并就本用户指南中论述的各主题,对源代码进行了说明。• 附录A:COFF 文件格式 — 详细阐述了Microchip 的COFF 格式。• 附录B:采用ANSI 定义的方式 — 论述按照ANSI 标准的要求,MPLAB C18 实现所定义的执行方式。• 附录C:命令行概述 — 列出了命令行选项以及论述每个命令行选项的参考章节。• 附录D:MPLAB C18 诊断 — 列出了错误、警告和消息。• 附录E:扩展模式 — 论述非扩展模式和扩展模式之间的区别。
上传时间: 2013-10-30
上传用户:1583060504
单片机指令系统原理 51单片机的寻址方式 学习汇编程序设计,要先了解CPU的各种寻址法,才能有效的掌握各个命令的用途,寻址法是命令运算码找操作数的方法。在我们学习的8051单片机中,有6种寻址方法,下面我们将逐一进行分析。 立即寻址 在这种寻址方式中,指令多是双字节的,一般第一个字节是操作码,第二个字节是操作数。该操作数直接参与操作,所以又称立即数,有“#”号表示。立即数就是存放在程序存储器中的常数,换句话说就是操作数(立即数)是包含在指令字节中的。 例如:MOV A,#3AH这条指令的指令代码为74H、3AH,是双字节指令,这条指令的功能是把立即数3AH送入累加器A中。MOV DPTR,#8200H在前面学单片机的专用寄存器时,我们已学过,DPTR是一个16位的寄存器,它由DPH及DPL两个8位的寄存器组成。这条指令的意思就是把立即数的高8位(即82H)送入DPH寄存器,把立即数的低8位(即00H)送入DPL寄存器。这里也特别说明一下:在80C51单片机的指令系统中,仅有一条指令的操作数是16位的立即数,其功能是向地址指针DPTR传送16位的地址,即把立即数的高8位送入DPH,低8位送入DPL。 直接寻址 直接寻址方式是指在指令中操作数直接以单元地址的形式给出,也就是在这种寻址方式中,操作数项给出的是参加运算的操作数的地址,而不是操作数。例如:MOV A,30H 这条指令中操作数就在30H单元中,也就是30H是操作数的地址,并非操作数。 在80C51单片机中,直接地址只能用来表示特殊功能寄存器、内部数据存储器以及位地址空间,具体的说就是:1、内部数据存储器RAM低128单元。在指令中是以直接单元地址形式给出。我们知道低128单元的地址是00H-7FH。在指令中直接以单元地址形式给出这句话的意思就是这0-127共128位的任何一位,例如0位是以00H这个单元地址形式给出、1位就是以01H单元地址给出、127位就是以7FH形式给出。2、位寻址区。20H-2FH地址单元。3、特殊功能寄存器。专用寄存器除以单元地址形式给出外,还可以以寄存器符号形式给出。例如下面我们分析的一条指令 MOV IE,#85H 前面的学习我们已知道,中断允许寄存器IE的地址是80H,那么也就是这条指令可以以MOV IE,#85H 的形式表述,也可以MOV 80H,#85H的形式表述。 关于数据存储器RAM的内部情况,请查看我们课程的第十二课。 直接寻址是唯一能访问特殊功能寄存器的寻址方式! 大家来分析下面几条指令:MOV 65H,A ;将A的内容送入内部RAM的65H单元地址中MOV A,direct ;将直接地址单元的内容送入A中MOV direct,direct;将直接地址单元的内容送直接地址单元MOV IE,#85H ;将立即数85H送入中断允许寄存器IE 前面我们已学过,数据前面加了“#”的,表示后面的数是立即数(如#85H,就表示85H就是一个立即数),数据前面没有加“#”号的,就表示后面的是一个地址地址(如,MOV 65H,A这条指令的65H就是一个单元地址)。 寄存器寻址 寄存器寻址的寻址范围是:1、4个工作寄存器组共有32个通用寄存器,但在指令中只能使用当前寄存器组(工作寄存器组的选择在前面专用寄存器的学习中,我们已知道,是由程序状态字PSW中的RS1和RS0来确定的),因此在使用前常需要通过对PSW中的RS1、RS0位的状态设置,来进行对当前工作寄存器组的选择。2、部份专用寄存器。例如,累加器A、通用寄存器B、地址寄存器DPTR和进位位CY。 寄存器寻址方式是指操作数在寄存器中,因此指定了寄存器名称就能得到操作数。例如:MOV A,R0这条指令的意思是把寄存器R0的内容传送到累加器A中,操作数就在R0中。INC R3这条指令的意思是把寄存器R3中的内容加1 从前面的学习中我产应可以理解到,其实寄存器寻址方式就是对由PSW程序状态字确定的工作寄存器组的R0-R7进行读/写操作。 寄存器间接寻址 寄存间接寻址方式是指寄存器中存放的是操作数的地址,即操作数是通过寄存器间接得到的,因此称为寄存器间接寻址。 MCS-51单片机规定工作寄存器的R0、R1做为间接寻址寄存器。用于寻址内部或外部数据存储器的256个单元。为什么会是256个单元呢?我们知道,R0或者R1都是一个8位的寄存器,所以它的寻址空间就是2的八次方=256。例:MOV R0,#30H ;将值30H加载到R0中 MOV A,@R0 ;把内部RAM地址30H内的值放到累加器A中 MOVX A,@R0 ;把外部RAM地址30H内的值放到累加器A中 大家想想,如果用DPTR做为间址寄存器,那么它的寻址范围是多少呢?DPTR是一个16位的寄存器,所以它的寻址范围就是2的十六次方=65536=64K。因用DPTR做为间址寄存器的寻址空间是64K,所以访问片外数据存储器时,我们通常就用DPTR做为间址寄存器。例:MOV DPTR,#1234H ;将DPTR值设为1234H(16位) MOVX A,@DPTR ;将外部RAM或I/O地址1234H内的值放到累加器A中 在执行PUSH(压栈)和POP(出栈)指令时,采用堆栈指针SP作寄存器间接寻址。例:PUSH 30H ;把内部RAM地址30H内的值放到堆栈区中堆栈区是由SP寄存器指定的,如果执行上面这条命令前,SP为60H,命令执行后会把内部RAM地址30H内的值放到RAM的61H内。 那么做为寄存器间接寻址用的寄存器主要有哪些呢?我们前面提到的有四个,R0、R1、DPTR、SP 寄存器间接寻址范围总结:1、内部RAM低128单元。对内部RAM低128单元的间接寻址,应使用R0或R1作间址寄存器,其通用形式为@Ri(i=0或1)。 2、外部RAM 64KB。对外部RAM64KB的间接寻址,应使用@DPTR作间址寻址寄存器,其形式为:@DPTR。例如MOVX A,@DPTR;其功能是把DPTR指定的外部RAM的单元的内容送入累加器A中。外部RAM的低256单元是一个特殊的寻址区,除可以用DPTR作间址寄存器寻址外,还可以用R0或R1作间址寄存器寻址。例如MOVX A,@R0;这条指令的意思是,把R0指定的外部RAM单元的内容送入累加器A。 堆栈操作指令(PUSH和POP)也应算作是寄存器间接寻址,即以堆栈指针SP作间址寄存器的间接寻址方式。 寄存器间接寻址方式不可以访问特殊功能寄存器!! 寄存器间接寻址也须以寄存器符号的形式表示,为了区别寄存器寻址我寄存器间接寻址的区别,在寄存器间接寻址方式式中,寄存器的名称前面加前缀标志“@”。 基址寄存器加变址寄存器的变址寻址 这种寻址方式以程序计数器PC或DPTR为基址寄存器,累加器A为变址寄存器,变址寻址时,把两者的内容相加,所得到的结果作为操作数的地址。这种方式常用于访问程序存储器ROM中的数据表格,即查表操作。变址寻址只能读出程序内存入的值,而不能写入,也就是说变址寻址这种方式只能对程序存储器进行寻址,或者说它是专门针对程序存储器的寻址方式。例:MOVC A,@A+DPTR这条指令的功能是把DPTR和A的内容相加,再把所得到的程序存储器地址单元的内容送A假若指令执行前A=54H,DPTR=3F21H,则这条指令变址寻址形成的操作数地址就是54H+3F21H=3F75H。如果3F75H单元中的内容是7FH,则执行这条指令后,累加器A中的内容就是7FH。 变址寻址的指令只有三条,分别如下:JMP @A+DPTRMOVC A,@A+DPTRMOVC A,@A+PC 第一条指令JMP @A+DPTR这是一条无条件转移指令,这条指令的意思就是DPTR加上累加器A的内容做为一个16位的地址,执行JMP这条指令是,程序就转移到A+DPTR指定的地址去执行。 第二、三条指令MOVC A,@A+DPTR和MOVC A,@A+PC指令这两条指令的通常用于查表操作,功能完全一样,但使用起来却有一定的差别,现详细说明如下。我们知道,PC是程序指针,是十六位的。DPTR是一个16位的数据指针寄存器,按理,它们的寻址范围都应是64K。我们在学习特殊功能寄存器时已知道,程序计数器PC是始终跟踪着程序的执行的。也就是说,PC的值是随程序的执行情况自动改变的,我们不可以随便的给PC赋值。而DPTR是一个数据指针,我们就可以给空上数据指针DPTR进行赋值。我们再看指令MOVC A,@A+PC这条指令的意思是将PC的值与累加器A的值相加作为一个地址,而PC是固定的,累加器A是一个8位的寄存器,它的寻址范围是256个地址单元。讲到这里,大家应可明白,MOVC A,@A+PC这条指令的寻址范围其实就是只能在当前指令下256个地址单元。所在,这在我们实际应用中,可能就会有一个问题,如果我们需要查询的数据表在256个地址单元之内,则可以用MOVC A,@A+PC这条指令进行查表操作,如果超过了256个单元,则不能用这条指令进行查表操作。刚才我们已说到,DPTR是一个数据指针,这个数据指针我们可以给它赋值操作的。通过赋值操作。我们可以使MOVC A,@A+DPTR这条指令的寻址范围达到64K。这就是这两条指令在实际应用当中要注意的问题。 变址寻址方式是MCS-51单片机所独有的一种寻址方式。 位寻址 80C51单片机有位处理功能,可以对数据位进行操作,因此就有相应的位寻址方式。所谓位寻址,就是对内部RAM或可位寻址的特殊功能寄存器SFR内的某个位,直接加以置位为1或复位为0。 位寻址的范围,也就是哪些部份可以进行位寻址: 1、我们在第十二课学习51单片机的存储器结构时,我们已知道在单片机的内部数据存储器RAM的低128单元中有一个区域叫位寻址区。它的单元地址是20H-2FH。共有16个单元,一个单元是8位,所以位寻址区共有128位。这128位都单独有一个位地址,其位地址的名字就是00H-7FH。这里就有一个比较麻烦的问题需要大家理解清楚了。我们在前面的学习中00H、01H。。。。7FH等等,所表示的都是一个字节(或者叫单元地址),而在这里,这些数据都变成了位地址。我们在指令中,或者在程序中如何来区分它是一个单元地址还是一个位地址呢?这个问题,也就是我们现在正在研究的位寻址的一个重要问题。其实,区分这些数据是位地址还是单元地址,我们都有相应的指令形式的。这个问题我们在后面的指令系统学习中再加以论述。 2、对专用寄存器位寻址。这里要说明一下,不是所有的专用寄存器都可以位寻址的。具体哪些专用寄存器可以哪些专用寄存器不可以,请大家回头去看看我们前面关于专用寄存器的相关文章。一般来说,地址单元可以被8整除的专用寄存器,通常都可以进行位寻址,当然并不是全部,大家在应用当中应引起注意。 专用寄存器的位寻址表示方法: 下面我们以程序状态字PSW来进行说明 D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV P 1、直接使用位地址表示:看上表,PSW的第五位地址是D5,所以可以表示为D5H MOV C,D5H 2、位名称表示:表示该位的名称,例如PSW的位5是F0,所以可以用F0表示 MOV C,F0 3、单元(字节)地址加位表示:D0H单元位5,表示为DOH.5 MOV C,D0H.5 4、专用寄存器符号加位表示:例如PSW.5 MOV C,PSW.5 这四种方法实现的功能都是相同的,只是表述的方式不同而已。 例题: 1. 说明下列指令中源操作数采用的寻址方式。 MOV R5,R7 答案:寄存器寻址方式 MOV A,55H 直接寻址方式 MOV A,#55H 立即寻址方式 JMP @A+DPTR 变址寻址方式 MOV 30H,C 位寻址方式 MOV A,@R0 间接寻址方式 MOVX A,@R0 间接寻址方式 改错题 请判断下列的MCS-51单片机指令的书写格式是否有错,若有,请说明错误原因。 MOV R0,@R3 答案:间址寄存器不能使用R2~R7。 MOVC A,@R0+DPTR 变址寻址方式中的间址寄存器不可使用R0,只可使用A。 ADD R0,R1 运算指令中目的操作数必须为累加器A,不可为R0。 MUL AR0 乘法指令中的乘数应在B寄存器中,即乘法指令只可使用AB寄存器组合。
上传时间: 2013-11-11
上传用户:caozhizhi
C51原理及相关基础入门知识 第一章:C51 流程控制语句一、分类条件语句、循环语句和开关语句。下面将对这些语句作详细介绍。(1) 条件语句条件语句的一般形式为:if(表达式)语句 1;else语句 2;上述结构表示: 如果表达式的值为非0(TURE)即真, 则执行语句1, 执行完语句1 从语句2 后开始继续向下执行; 如果表达式的值为 0(FALSE)即假, 则跳过语句1 而执行语句2。所谓表达式是指关系表达式和逻辑表达式的结合式。注意:1. 条件执行语句中"else 语句2;"部分是选择项, 可以缺省, 此时条件语句变成:if(表达式) 语句1;表示若表达式的值为非 0 则执行语句1 , 否则跳过语句1 继续执行。2. 如果语句1 或语句2 有多于一条语句要执行时, 必须使用"{"和"}" 把这些语句包括在其中, 此时条件语句形式为:if(表达式){语句体 1;}else{语句体 2;}3. 条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易出错, 其原因主要是不知道哪个if 对应哪个else。例如:if(x>20||x<-10)if(y<=100&&y>x)printf("Good");elseprintf("Bad");对于上述情况,规定: else 语句与最近的一个if 语句匹配, 上例中的 else 与 if(y<=100&&y>x) 相匹配。为了使 else 与if(x>20||x<-10) 相匹配, 必须用花括号。如下所示:if(x>20||x<-10){if(y<=100&&y>x)printf("Good");}
上传时间: 2013-10-24
上传用户:Sophie