文档库 最新最全的文档下载
当前位置:文档库 › 义隆单片机 EM78P153_C语言范例

义隆单片机 EM78P153_C语言范例

义隆单片机 EM78P153_C语言范例
义隆单片机 EM78P153_C语言范例

51系列单片机

51系列单片机 51系列单片机最早有Intel公司推出,主要有8031系列,8051系列。后来Atmel 公司以8051的内核为基础推出了AT89系列单片机。其中 AT89C51 AT89C52 AT89S51 AT89S52 AT89S8252等单片机完全兼容8051系列单片机,所有的指令功能也是一样的。就是功能上做了一系列的扩展,比如说AT89S系列都支持ISP 功能,AT89S52 AT89S8252增加了内部WDT功能,增加了一个定时器等功能。为了学习简单Atmel也推出了8051指令完全一样的AT89C2051 AT89C4051等单片机,这些单片机可以看成精简型的8051单片机。比较适合初学者的需要。AVR单片机 AVR单片机也是Atmel公司的产品,最早的就是AT90系列单片机,现在很多AT90单片机都转型给了Atmega系列和Attiny系列,AVR单片机最大的特点是精简指令型单片机,执行速度,据我所知是8位MCU中最快的一种单片机了(相同的振荡频率下)。学习AVR单片机当然可以直接就学,但是建议还是从51系列学起。 PIC单片机 PIC单片机是Microchip公司的产品,它也是一种精简指令型的单片机,指令数量比较少,中档的PIC系列仅仅有35条指令而已,低档的仅有33条指令。但是如果使用汇编语言编写PIC单片机的程序有一个致命的弱点就是PIC中低档单片机里有一个翻页的概念,编写程序比较麻烦。但是我个人认为PIC 还是一个不错的8位MCU. 初学单片机一般是选51系列的单片机,比如说Intel公司的8051系列,Atmel 的AT89系列,STC公司的51系列等等都可以算是51系列单片机。这些单片机的指令系统是一样的。外面出的资料也是最多。建议选择Atmel的AT89系列芯片,出的资料最多。如果你自己要做实验,建议选择 AT89S52 AT89S51 AT89S8252等芯片学习,因为这些“S”的芯片全部支持ISP(在线烧录)只要一根下载线就可以了(建议选择AVR的下载线,为了以后能同时下载 AVR的芯片的程序考虑),编译软件可以到https://www.wendangku.net/doc/f013217790.html,上下载。烧录软件就选双龙的SLISP就可以了。这样学习的话无需使用昂贵的编程器,只要一根廉价的下载线就可以了。这类也可以同时进行SPI(同步串行扩展接口),和USART(串行方式通用同步/异步收发器)的学习。而且学习 8051类型片除了资料多以外还有一个好处就是它属于CISC(复杂指令集)结构型单片机。指令系统比较完全,利用汇编语言写程序比较简单,易懂。而且它也有keilC51的C编译器。可以利用C语言来写程序。 当然51类单片机还有很多缺点: 1. 运行速度很慢,(因为是CISC(集中指令)结构,而且芯片为了抗干扰采用了12分频的方法) 2. 所有的I/0口都是准双向口,I/0口的驱动能力弱。(但是AT89的灌电流比较大,大概有20mA左右) 3. 芯片里面的P0口没有上拉电阻(P1,P2,P3口有上拉电阻)如果要输出高电

义隆单片机_总结

义隆单片机总结 1.EM78P173N使用外部中断时,需要外部上拉; 2.建议不用BC清除中断标志位; 3.判断某个I/O口的状态前,先执行MOV R,R 4.义隆C语言注意事项: The total parameters passed to a function should be a fixed number.The compiler does not support uncertain parameter_list. Recursive functions are not supported in the compiler.(不支持递归) Do not use“struct”or“union”or“bit”as parameter for function. Function pointer is not supported. Bit data type cannot be used as a return value. Bit data type is not supported in the IO control register. Bit is a reserved word,so DO NOT use it as a name of“struct”or“union”. Only global variable can be declared as“bit”data type. You cannot assign location for Bit data in local field.Otherwise compilation error will occur. For reduced RAM bank wastage,it is suggest that you use global variable in function,instead of using argument. 5.Bit data type cannot be used in“struct”and“union.”It is recommended to use “bitfield”instead,such as: union mybit{ unsigned int b0:1 unsigned int b1:1 unsigned int b2:1 unsigned int b3:1 unsigned int b4:1 unsigned int b5:1 unsigned int b6:1 unsigned int b7:1 }; 6.bit变量推荐使用Struct定义: struct { uint8_t b0:1; uint8_t b1:1; uint8_t b2:1; uint8_t b3:1; uint8_t b4:1; uint8_t b5:1; uint8_t b6:1; uint8_t b7:1; } 7.程序写法:

51单片机汇编指令集(附记忆方法)

51单片机汇编指令集 一、数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; 三、逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; 四、控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移;

51单片机汇编指令集(附记忆方法)

51 单片机汇编指令集 一、数据传送类指令( 7 种助记符) MOV(英文为Move :对内部数据寄存器RAM 和特殊功能寄存器SFR 的数据进行 传送; MOV Q Move Code )读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部 RAM 勺数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; 二、算术运算类指令( 8 种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加 1; DEC(Decrement) 减 1; MUL(Multiplication 、Multiply) 乘法; DIV(Division 、Divide) 除法; 三、逻辑运算类指令( 10 种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) SWAP (Swap) 低 4 位与高 4 位交换; 四、控制转移类指令( 17 种助记符) ACALL ( Absolute subroutine Call )子程序绝对调用; LCALL ( Long subroutine Call )子程序长调用; RET ( Return from subroutine )子程序返回; RETI ( Return from Interruption )中断返回; SJMP ( Short Jump )短转移; AJMP ( Absolute Jump )绝对转移; LJMP( Long Jump )长转移; CJNE (Compare Jump if Not Equal) 比较不相等则转移; DJNZ (Decreme nt Jump if Not Zero) 减1后不为0则转移; JZ (Jump if Zero) 结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移; JC (Jump if the Carry flag is set) 有进位则转移; JNC (Jump if Not Carry) 无进位则转移; JB (Jump if the Bit is set) 位为1则转移; JNB (Jump if the Bit is Not set) 位为0则转移; 带进位循环左移; 带进位循环右移;

义隆单片机指令集

隆单片机指令系统 3.1.EM78指令概述 EM78156 & EM78P156 单片机共有的58 条指令,其宽度为13 位。每一个指令码可分割成两部份,第一部分为标示指令功能的运算码(OPCODE ),第二部份則指出运算时所需之參数,亦即运算码(OPERAND )。而指令的类型大致可分为下列四种: (1)控制型指令(control operation ):如INT...等等。 (2)面向寄存器(字节操作)型指令(register oriented ):如 MOV A, Reg_B ;move Reg_B to A ADD Reg_B, A ;add Reg_B with A, and ;save in Reg_B ... 等等。 (3)位操作型指令(bit oriented ):如 BC,JBS...等等。 (4)常数型指令(constant operation ):如 MOV A, @0x55 ;move 0x55 to A XOR @0xFF ;Xor A with 0xFF 一般而言,EM78 系列八位微控制器除一个指令需两个周期之外,其他的指令只需一个指令周期,除了对PC (Program Counter)做“写”的指令,需二个指令周期,如(MOV PC, A)。 3.2.EMC 汇编语言指令集 符号解说: 1.符号‘R’:代表一般用途寄存器中的其中一个。 2.符号‘B’:代表一般用途寄存器中的某一位。 3.符号‘K’:代表8位或10位的常数或内容。 4.符号‘A’:代表累加寄存器。 3.2.1. 面向寄存器(字节操作)型指令(26条) 助记符号指令动作标志影响指令周期语言描述 ADD A,R A+R->A Z,C,DC 1 ADD ADD R,A A+R->R Z,C,DC 1 ADD AND A,R A&R->A Z 1 AND AND R,A A&R->R Z 1 AND CLR R 0->R Z 1 Clear Register CLRA 0->A Z 1 Clear the A register COM R /R->R Z 1 Complement R 助记符号指令动作标志影响指令周期语言描述 COMA R /R->A Z 1 Complement R,Place in A DAA A寄存器调整为BCD值 C 1 Decimal Adjust DEC R R-1->R Z 1 Decrement R DECA R R-1->A Z 1 Decrement R,Place in A DJZ R R-1->R 结果为零就跳过下一个指令 1 Decrement R,Skip if 0 DJZA R R-1->A 结果为零就跳过下一个指令 1 Decrement R,Please in A register, Skip if 0 INC R R+1->R Z 1 Increment R INCA R R+1->A Z 1 Increment R,Please in A JZ R R+1->R, 结果为零就跳过下一个指令 1 Increment R,Skip if 0 JZA R R+1->A, 结果为零就跳过下一个指令 1 Increment R,Place in the A regiser,Skipif 0

单片机汇编语言指令集

汇编语言的所有指令数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或取出堆栈 语法: PUSH 操作数POP 操作数 格式: PUSH r PUSH M PUSH data POP r POP m PUSHF,POPF,PUSHA,POPA 功能: 堆栈指令群 格式: PUSHF POPF PUSHA POPA LEA,LDS,LES 功能: 取地址至寄存器 语法: LEA r,m LDS r,m LES r,m XLAT(XLATB) 功能: 查表指令 语法: XLAT XLAT m 算数运算指令 ADD,ADC 功能: 加法指令 语法: ADD OP1,OP2 ADC OP1,OP2 格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data 影响标志: C,P,A,Z,S,O SUB,SBB 功能:减法指令 语法: SUB OP1,OP2 SBB OP1,OP2 格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,O

INC,DEC 功能: 把OP的值加一或减一 语法: INC OP DEC OP 格式: INC r/m DEC r/m 影响标志: P,A,Z,S,O NEG 功能: 将OP的符号反相(取二进制补码) 语法: NEG OP 格式: NEG r/m 影响标志: C,P,A,Z,S,O MUL,IMUL 功能: 乘法指令 语法: MUL OP IMUL OP 格式: MUL r/m IMUL r/m 影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志) DIV,IDIV 功能:除法指令 语法: DIV OP IDIV OP 格式: DIV r/m IDIV r/m CBW,CWD 功能: 有符号数扩展指令 语法: CBW CWD AAA,AAS,AAM,AAD 功能: 非压BCD码运算调整指令 语法: AAA AAS AAM AAD 影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD) DAA,DAS 功能: 压缩BCD码调整指令 语法: DAA DAS 影响标志: C,P,A,Z,S 位运算指令集 AND,OR,XOR,NOT,TEST 功能: 执行BIT与BIT之间的逻辑运算 语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位 SHR,SHL,SAR,SAL 功能: 移位指令 语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL

EM78系列单片机的开发工具及编程器

第六章EM78系列单片机的开发工具及编程器 EM78单片机的开发工具一般包括:(1)宏汇编(交叉汇编)(2)仿真器(3)程序烧写器。单片机的开发过程如下: 1)用编辑软件(如:EDI T、PE2等)输入源程序(扩展名DT) 2)用宏汇编(ASM456/AS M447)对源程序(*。DT)进行汇编。 3)使用仿真器(ICE456/447)进行程序调试。仿真调试正确转向下一步, 不正确则修改源程序再转向“2”开始。 4)将调试完毕的目标码(*.CDS)用烧写器烧入EM78单片机中。 5)将烧好的单片机插入实际电路中检查,若正确则开发完毕,否则修改 程序转向“2”开始。 下面分别介绍上述三种开发工具。 6.1.宏汇编(交叉汇编)与汇编语言格式 6.1.1.宏汇编程序 ASM456是E M78154/156/256/456的汇编程序。 ASM447是E M78247/447的汇编程序。 ASM456/447是台湾义隆电子公司设计的针对E M78单片机的汇编软件,该软件也包含在仿真器(E8-ICE)的集成调试软件中,也可以直接在仿真器软件中汇编,也可以单独使用。对源程序汇编后会产生如下文件:*.dt:源程序 *.st d:提供给程序设计者参考的标准文件 *.cd s:即一般所谓的目标文件(ob jec t文件) .ice:提供给仿真器(E8-IC E)显示使用 *.li n 及*.ad r:提供给仿真器(E8-I CE)的数据库使用 注:*.i ce及*.s td为可读的文本文件,其余为不可读。 若汇编失败,将产生一个*.e rr文件,内为错误信息,以便设计者排错用。 6.1.2.汇编语言格式 以下就该编译器的語法,作一詳盡介紹。 (1)键入格式 本编译器並不对字之大写或小写作区別,如 "MOV", "Mov", "mOV",和 "MoV" 在解释上是不做区別的。 (2)在常数之前请加小鼠标"@",其它如寄存器(r) 及位(b)之前則不加"@"。例如 MOV A, @0x55 ;add"@" before constant 0x55 BC 0x7, 0x4 ;no"@" before both register ;7 and bit4 SUB 0x10,A ;no"@" before register 0x10

几种常用的单片机型号

当今单片机厂商琳琅满目,产品性能各异。针对具体情况,我们应选何种型号呢?首先,我们来弄清两个概念:集中指令集(CISC)和精简指令集(RISC)。采用CISC结构的单片机数据线和指令线分时复用,即所谓冯.诺伊曼结构。它的指令丰富,功能较强,但取指令和取数据不能同时进行,速度受限,价格亦高。采用RISC结构的单片机数据线和指令线分离,即所谓哈佛结构。这使得取指令和取数据可同时进行,且由于一般指令线宽于数据线,使其指令较同类CISC单片机指令包含更多的处理信息,执行效率更高,速度亦更快。同时,这种单片机指令多为单字节,程序存储器的空间利用率大大提高,有利于实现超小型化。属于CISC结构的单片机有Intel8051系列、Motorola和M68HC系列、Atmel的AT89系列、台湾Win bond(华邦)W78系列、荷兰Philips的PCF80C51系列等;属于RISC结构的有Microchip公司的PIC系列、Silo 的Z86系列、Atmel的AT90S系列、韩国三星公司的KS57C系列4位单片机、台湾义隆的EM-78系列等。一般来说,控制关系较简单的小家电,可以采用RISC型单片机;控制关系较复杂的场合,如通讯产品、工业控制系统应采用CISC单片机。不过,RISC单片机的迅速完善,使其佼佼者在控制关系复杂的场合也毫不逊色。根据程序存储方式的不同,单片机可分为EPROM、OTP(一次可编程)、QTP(掩膜)三种。我国一开始都采用Rimless型单片机(片内无ROM,需片外配EPROM),对单片机的普及起了很大作用,但这种强调接口的单片机无法广泛应用,甚至走入了误区。如单片机的应用一味强调接口,外接I/O及存储

义隆单片机EM78P153使用

基于EM78P153S的应用设计 (V1.0)

目录 第一章EM78P153S的初识 (1) 1.1 EM78P152/3S特性 (1) 1.2 EM78P152/3S引脚 (2) 1.3 功能寄存器 (2) 1.3.1 累加器与端口控制寄存器 (2) 1.3.2中断状态寄存器与中断使能寄存器 (3) 1.3.3 操作寄存器 (4) 1.3.4 特殊功能寄存器 (6) 1.4 数据存储器的配置 (7) 1.5 休眠与唤醒 (7) 1.6 分频器 (9) 1.7 定时器/计数器TCC (9) 第二章EM78系列单片机应用软件的编辑与仿真 (11) 2.1 Simulator的下载与安装 (11) 2.2 Simulator的使用方法 (11) 2.3 Simulator系统常用命令汇总 (14) 2.4 Simulator仿真中的常见问题 (15) 第三章EM78系列单片机的汇编指令 (17) 3.1 寻址方式 (17) 3.2 伪指令 (18) 3.3 指令速查表 (18) 第四章EM78P153S应用软件设计 (20) 4.1 外部中断程序 (20) 4.2 花样灯程序 (22) 4.2.1 设计需求 (22) 4.2.2 软件设计 (23) 4.2.3 硬件设计 (37) 4.2.4 元器件明细表 (38) 第五章EM78系列单片机应用程序的烧录 (39) 5.1 程序的转换过程 (39) 5.2 烧录器与烧录软件 (40) 5.3 烧录步骤 (41)

第一章 EM78P153S的初识 EM78P152/3S是采用低功耗高速CMOS工艺设计开发的8位微控制器,它的内部有一个1024×13位一次性可编程只读存储器(OTP_ROM) ,可见1k的只读存储器(ROM)决定了应用程序不能够太多,否则应用程序机器码将无法烧录到芯片中。 硬件设计中,EM78P152/3S可以通过设置代码选项寄存器使微处理器工作在内部RC 振荡模式(IRC)下,此模式下采用上电复位模式而不需要外接时钟电路;同时利用上电自动复位而不需要外接复位电路,P63复位引脚可以直接作为输入脚使用,充分提高了微处理器端口的利用率,这样硬件应用电路极为简化,节省了硬件成本。 此外,EM78P153S单片机具有休眠模式,在一些不需要微处理器实时工作的应用场合,可以节省用电量,特别是在使用电池供电时,应用此模式可以延长电池的使用时间;另外在休眠模式下避免了微处理器在运行时受到来自外在杂波信号的干扰而导致程序跑飞。1.1 EM78P152/3S特性 EM78P152/3S的性能如表1.1所示。 表1.1 EM78P152/3S特性 产品特性备注 CPU配置? 1K × 13位片内ROM ? 32 × 8位片内寄存器 ? 5级堆栈用于子程序嵌套 ?小于1.5 mA @ 5V/4MHz ?休眠模式下的典型值为1μA 。 I/O 端口配置? 2组双向I/O 端口:P5,P6 ? 11个I/O引脚 ?唤醒端口:P6 ? 6个可编程下拉I/O 引脚? 7个可编程上拉I/O 引脚? 7个可编程漏极开路I/O 引脚?外部中断:P60 工作电压范围? OTP 版本;工作电压范围:2.3V~5.5V 工作频率范围? IRC模式;振荡模式:4MHz,8MHz,1MHz,455KHz 外设配置? 8位实时时钟/ 计数器,可编程选择其信号源、触发边沿,溢出产生中断 三种中断源? TCC 溢出中断 ?输入端口状态改变中断(可使微控制器从休眠模式唤醒)?外部中断 专有特性?省电模式( 休眠模式) ?可选振荡模式 封装类型? 14引脚DIP:EM78P153SP/S/J ? 14引脚SOP:EM78P153SN/S/J ? 10引脚SSOP:EM78P152SN/S/J 其它?具备一个保护寄存器以防止OTP_ROM中的程序代码被窃取

单片机分类及汇总大全

经典的: 1、MCS-51系列Intel公司生产 2、61单片机3、A VR单片机4、MSP 430超低功耗单片机德州仪器(TI)公司生产 5、PIC单片机MicroChip公司生产6、飞思卡尔的单片机7、英飞凌的单片机 1.8051 最早由Intel公司推出8051/31类单片机。由于Intel公司将重点放在186,386,奔腾等与PC类兼容的高档芯片开发上。Intel公司将MCS-51系列单片机中的8051内核使用权以专利互换或出让给世界许多著名IC制造厂商,如Philips 、NEC、Atmel、AMD、Dallas、siemens、Fujutsu、OKI、华邦、LG等。 这些公司在保持与8051单片机兼容基础改善了8051的许多特点。扩展了针对满足不同测控对象要求的外围电路,如满足模拟量输入的A/D、满足伺服驱动的PWM、满足高速输入/输出控制的HSL/HSO、满足串行扩展总线I2C、保证程序可靠运行的的WDT、引入使用方便且价廉的Flash ROM等。提高了速度,降低了时钟频率,放宽了电源电压的动态范围,降低了产品价格。 使得以8051为内核的MCU系列单片机在世界上产量最大,应用也最广泛。80C51已成为8位单片机的主流,成了事实上的标准MCU芯片。 51系列单片机是这些厂商以Intel公司MCS-51系列单片机中的8051为基核推出的各种型号的兼容性单片机。Intel公司MCS-51系列单片机中的8051是其中最基础的单片机型号。 2. Atmel公司(美国) Atmel公司是世界上著名的高性能、低功耗、非易失性存储器和数字集成电路的一流半导体制造公司。Atmel 公司最令人注目的是它的EEPROM 电可擦除技术闪速存储器技术和质量高可靠性的生产技术,在CMOS 器件生产领域中Atmel的先进设计水平优秀的生产工艺及封装技术一直处于世界的领先地位。 这些技术用于单片机生产使单片机也具有优秀的品质,Atmel公司的单片机是目前世界上一种独具特色而性能卓越的单片机,在结构性能和功能等方面都有明显的优势,它在计算机外部设备通讯设备自动化工业控制宇航设备仪器仪表和各种消费类产品中都有着广泛的应用前景。 其生产的AT90系列是增强型RISC(精简指令集)内载FLASH单片机,通常称为A VR系列(Advance RISC)。使用哈佛结构。芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。其增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力.A VR单片机工作电压为2.7~6.0V,可以实现耗电最优化.A VR的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域. AT91M系列是基于ARM7TDMI 嵌入式处理器的,A TMEL 16/32 微处理器系列中的一个新成员,该处理器用高密度的16 位指令集实现了高效的32 位RISC 结构且功耗很低。另外Atmel的增强型51系列(AT89系列)单片机目前在市场上仍然十分流行,其中A T89S51十分活跃。(l)前缀由字母AT组成,表示该器件是ATMEL 公司的产品(2)型号89CXXXX 中C是表示内部含Flash存储器C表示为CMOS产品89LVXXXX 中LV表示低压产品89SXXXX 中S表示含有串行下载Flash存储器 3.Microchip公司(美国) MicroChip单片机的主要产品是PIC 16C系列和17C系列8位单片机,CPU采用RISC结构,分别仅有33,35,58条指令,采用Harvard双总线结构,运行速度快,低工作电压,低功耗,较大的输入输出直接驱动能力,价格低,一次性编程,小体积。以低价位著称,一般单片机价格都在1 美元以下.Microchip 单片机没有掩膜产品,全部都是OTP 器件(现已推出FLASH 型单片机).Microchip 强调节约成本的最优化设计,是使用量大,档次低,价格敏感的产品.在办公自动化设备,消费电子产品,电讯通信,智能仪器仪表,汽车电子,金融电子,工业控制不同领域都有广泛的应用,PIC 系列(PIC16C5X、PIC16CXX、PIC17CXX、PIC18CXXX、PIC16FXXX、PIC17CXXX、PIC18XXXX)单片机在世界单片机市场份额排名中逐年提高,发展非常迅速。 代理商:实达高奇电子科技有限公司: https://www.wendangku.net/doc/f013217790.html,/ 4.TI 公司(美国) MSP430 系列单片机是由TI公司开发的16 位单片机。其突出特点是超低功耗,非常适合于各种功率要求低的场合。有多个系列和型号,分别由一些基本功能模块按不同的应用目标组合而成。采用冯-诺依曼架构,通过通用存储器地址总线(MAB)与存储器数据总线(MDB)将16 位RISC CPU、多种外设以及高度灵活的时钟系统进行完美结合。MSP430能够为当前与未来的混合信号应用提供很好的解决方案。所有MSP430 外设都只需最少量的软件服务。例如,模数转换器均具备自动输入通道扫描功能和硬件启动转换触发器,一些也带有

C51单片机汇编语言指令集

51汇编语言指令集 符号定义表 符号含义 Rn R0~R7寄存器n=0~7 Direct 直接地址,内部数据区的地址RAM(00H~7FH) SFR(80H~FFH) B,ACC,PSW,IP,P3, IE,P2,SCON,P1,TCON,P0 @Ri 间接地址Ri=R0或R1 8051/31RAM地址(00H~7FH) 8052/32RAM地址(00H~FFH) #data 8位常数 #data16 16位常数 Addr16 16位的目标地址 Addr11 11位的目标地址 Rel 相关地址 bit 内部数据RAM(20H~2FH),特殊功能寄存器的直接地址的位 指令介绍 指令字 节周 期 动作说明 算数运算指令 1.ADD A,Rn 1 1 将累加器与寄存器的内容相加,结果 存回累加器 2.ADD A,direct 2 1 将累加器与直接地址的内容相加,结 果存回累加器 3.ADD A,@Ri 1 1 将累加器与间接地址的内容相加,结 果存回累加器 4.ADD A,#data 2 1 将累加器与常数相加,结果存回累加 器 5.ADDC A,Rn 1 1 将累加器与寄存器的内容及进位C相 加,结果存回累加器 6.ADDC A,direct 2 1 将累加器与直接地址的内容及进位C 相加,结果存回累加器 7.ADDC A,@Ri 1 1 将累加器与间接地址的内容及进位C 相加,结果存回累加器 8.ADDC A,#data 2 1 将累加器与常数及进位C相加,结果 存回累加器 9.SUBB A,Rn 1 1 将累加器的值减去寄存器的值减借 位C,结果存回累加器 10.SUBB A,direct 2 1 将累加器的值减直接地址的值减借 位C,结果存回累加器 11.SUBB A,@Ri 1 1 将累加器的值减间接地址的值减借 位C,结果存回累加器 12.SUBB A,0data 2 1 将累加器的值减常数值减借位C,结 果存回累加器 13.INC A 1 1 将累加器的值加1 14.INC Rn 1 1 将寄存器的值加l 15.INC direct 2 1 将直接地址的内容加1 16.INC @Ri 1 1 将间接地址的内容加1 17.INC DPTR 1 1 数据指针寄存器值加1 说明:将16位的DPTR加1,当DPTR的低字节(DPL)从FFH溢出至00H时,会使高字节(DPH)加1,不影响任何标志位 18.DEC A 1 1 将累加器的值减1 19.DEC Rn 1 1 将寄存器的值减1 20.DEC direct 2 1 将直接地址的内容减1 21.DEC @Ri 1 1 将间接地址的内容减1 22.MUL AB 1 4 将累加器的值与B寄存器的值相 乘,乘积的低位字节存回累加器, 高位字节存回B寄存器 说明:将累加器A和寄存器B内的无符号整数相乘,产生16位的积,低位字节存入A,高位字节存入B寄存器。如果积大于FFH,则溢出标志位(OV)被设定为1,而进位标志位为0 23.DIV AB 1 4 将累加器的值除以B寄存器的值,结果 的商存回累加器,余数存回B寄存器 说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 1 1 将累加器A作十进制调整, 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 若(A) 7-4>9或(C)=1,则(A) 7-4←(A)7-4+6 逻辑运算指令 ANL A,Rn 1 1 将累加器的值与寄存器的值做AND的逻 辑判断,结果存回累加器 ANL A,direct 2 1 将累加器的值与直接地址的内容做AND 的逻辑判断,结果存回累加器 ANL A,@Ri 1 1 将累加器的值与间接地址的内容做AND 的逻辑判断,结果存回累加器 ANL A,#data 2 1 将累加器的值与常数做AND的逻辑判 断,结果存回累加器 ANL direct,A 2 1 将直接地址的内容与累加器的值做AND 的逻辑判断,结果存回该直接地址 ANL direct,#data 3 2 将直接地址的内容与常数值做AND 的逻辑判断,结果存回该直接地址ORL A,Rn 1 1 将累加器的值与寄存器的值做OR的逻 辑判断,结果存回累加器 32.ORL A,direct 2 1 将累加器的值与直接地址的内容做OR 的逻辑判断,结果存回累加器33.ORL 1 1 将累加器的值与间接地址的内容做OR

常见单片机芯片简介

3 常见单片机芯片简介 1) STC单片机技术。STC公司的单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强; 2)PIC单片机。它是MICROCHIP公司的产品,其突出的特点是体积小、功耗低、精简指令集、抗干扰性好、可靠性高、有较强的模拟接口、代码保密性好,大部分芯片有其兼容的FLASH程序存储器的芯片[2]。 3)EMC单片机。是台湾义隆公司的产品,有很大一部分与PIC 8位单片机兼容,且相兼容产品的资源相对比PIC的多,价格便宜,有很多系列可选,但抗干扰较差。 4)51单片机 (1)ATMEL单片机。ATMEl公司的8位单片机有AT89、AT90两个系列,AT89系列是8位Flash单片机,与8051系列单片机相兼容,静态时钟模式;AT90系列单片机是增强RISC结构、全静态工作方式、内载在线可编程Flash的单片机,也叫A VR单片机;(2)PHLIPIS 51PLC系列单片机。PHILIPS公司的单片机是基于80C51内核的单片机,嵌入了掉电检测、模拟以及片内RC振荡器等功能,这使51LPC在高集成度、低成本、低功耗的应用设计中可以满足多方面的性能要求;(3)TI公司单片机。德州仪器提供了TMS370和MSP430两大系列通用单片机.TMS370系列单片机是8位CMOS单片机,具有多种存储模式、多种外围接口模式,适用于复杂的实时控制场合;MSP430系列单片机是一种超低功耗、功能集成度较高的16位低功耗单片机,特别适用于要求功耗低的场合 5)HOLTEK单片机。台湾盛扬半导体的单片机,价格便宜,种类较多,但抗干扰较差,适用于消费类产品; 6)松翰单片机(SONIX)。SONIX是台湾松翰公司的单片机,大多为8位机,有一部分与PIC 8位单片机兼容,价格便宜,系统时钟分频可选项较多,有PMW ADC 内振内部杂讯滤波。缺点RAM空间过小,抗干扰较好; 4 八位单片机学习感想 通过对MCS-51、EMC系列、HT系列、PIC系列等八位单片机的学习与应用,对8位微处理器的特点有了较深的认识。

8051单片机汇编程序编码规范

8051单片机汇编程序编码规范 引言 软件设计更多地是一种工程,而不是一种个人艺术。如果不统一编程规范,最终写出的程序,其可读性将较差,这不仅给代码的理解带来障碍,增加维护阶段的工作量,同时不规范的代码隐含错误的可能性也比较大。 分析表明,编码阶段产生的错误当中,语法错误大概占20%左右,而由于未严格检查软件逻辑导致的错误、函数(模块)之间接口错误及由于代码可理解度低导致优化维护阶段对代码的错误修改引起的错误则占了一半以上。 可见,提高软件质量必须降低编码阶段的错误率。如何有效降低编码阶段的错误呢?这需要制定详细的软件编程规范,并培训每一位程序员,最终的结果可以把编码阶段的错误降至10%左右,同时也降低了程序的测试费用,效果相当显著。 本文从代码的可维护性(可读性、可理解性、可修改性)、代码逻辑与效率、函数(模块)接口、可测试性四个方面阐述了软件编程规范,规范分成规则和建议两种,其中规则部分为强制执行项目,而建议部分则不作强制,可根据习惯取舍。 1.排版 规则1 程序块使用缩进方式,函数和标号使用空格缩进,程序段混合使用TAB和空格缩进。缩进的目的是使程序结构清晰,便于阅读和理解。 默认宽度应为8个空格,由于Word中为4个空格,为示范清晰,此处用2个代替(下同)。 例如: MOV R1, #00H MOV R2, #00H MOV PMR, #PMRNORMAL MOV DPS, #FLAGDPTR MOV DPTR, #ADDREEPROM read1kloop: read1kpage: INC R1 MOVX A, @DPTR MOV SBUF, A JNB TI, $ CLR TI INC DPTR CJNE R1, #20H, read1kpage INC R2 MOV R1, #00H CPL WDI CJNE R2, #20H, read1kloop ;END OF EEPROM 规则2 在指令的操作数之间的,使用空格进行间隔,采用这种松散方式编写代码的目的是使代码更加清晰。

51单片机汇编指令集

1)数据传送类指令(7种助记符) MOV(英文为Move):对内部数据寄存器RAM和特殊功能寄存器SFR的数据进行传送; MOVC(Move Code)读取程序存储器数据表格的数据传送; MOVX (Move External RAM) 对外部RAM的数据传送; XCH (Exchange) 字节交换; XCHD (Exchange low-order Digit) 低半字节交换; PUSH (Push onto Stack) 入栈; POP (Pop from Stack) 出栈; (2)算术运算类指令(8种助记符) ADD(Addition) 加法; ADDC(Add with Carry) 带进位加法; SUBB(Subtract with Borrow) 带借位减法; DA(Decimal Adjust) 十进制调整; INC(Increment) 加1; DEC(Decrement) 减1; MUL(Multiplication、Multiply) 乘法; DIV(Division、Divide) 除法; (3)逻辑运算类指令(10种助记符) ANL(AND Logic) 逻辑与; ORL(OR Logic) 逻辑或; XRL(Exclusive-OR Logic) 逻辑异或; CLR(Clear) 清零; CPL(Complement) 取反; RL(Rotate left) 循环左移; RLC(Rotate Left throught the Carry flag) 带进位循环左移; RR(Rotate Right) 循环右移; RRC (Rotate Right throught the Carry flag) 带进位循环右移; SWAP (Swap) 低4位与高4位交换; (4)控制转移类指令(17种助记符) ACALL(Absolute subroutine Call)子程序绝对调用; LCALL(Long subroutine Call)子程序长调用; RET(Return from subroutine)子程序返回; RETI(Return from Interruption)中断返回; SJMP(Short Jump)短转移; AJMP(Absolute Jump)绝对转移; LJMP(Long Jump)长转移; CJNE (Compare Jump if Not Equal)比较不相等则转移; DJNZ (Decrement Jump if Not Zero)减1后不为0则转移; JZ (Jump if Zero)结果为0则转移; JNZ (Jump if Not Zero) 结果不为0则转移;

义隆指令

3.1.EM78指令概述 EM78156 & EM78P156 单片机共有的58 条指令,其宽度为13 位。每一个指令码可分割成两部份,第一部分为标示指令功能的运算码(OPCODE ),第二部份則指出运算时所需之參数,亦即运算码(OPERAND )。而指令的类型大致可分为下列四种: (1)控制型指令(control operation ):如 INT...等等。 (2)面向寄存器(字节操作)型指令(register oriented ):如 MOV A, Reg_B ;move Reg_B to A ADD Reg_B, A ;add Reg_B with A, and save in Reg_B ... 等等。 (3)位操作型指令(bit oriented ):如 BC,JBS...等等。 (4)常数型指令(constant operation ):如 MOV A, @0x55 ;move 0x55 to A XOR @0xFF ;Xor A with 0xFF 一般而言,EM78 系列八位微控制器除一个指令需两个周期之外,其他的指令只需一个指令周期,除了对PC (Program Counter)做“写”的指令,需二个指令周期,如(MOV PC, A)。 3.2.EMC 汇编语言指令集 符号解说: 1.符号‘R’:代表一般用途寄存器中的其中一个。 2.符号‘B’:代表一般用途寄存器中的某一位。 3.符号‘K’:代表8位或10位的常数或内容。 4.符号‘A’:代表累加寄存器。 3.2.1. 面向寄存器(字节操作)型指令(26条) 助记符号指令动作标志影响指令周期语言描述 ADD A,R A+R->A Z,C,DC 1 ADD ADD R,A A+R->R Z,C,DC 1 ADD AND A,R A&R->A Z 1 AND AND R,A A&R->R Z 1 AND CLR R 0->R Z 1 Clear Register CLRA 0->A Z 1 Clear the A register COM R /R->R Z 1 Complement R 助记符号指令动作标志影响指令周期语言描述 COMA R /R->A Z 1 Complement R,Place in A DAA A寄存器调整为BCD值C 1 Decimal Adjust DEC R R-1->R Z 1 Decrement R DECA R R-1->A Z 1 Decrement R,Place in A DJZ R R-1->R 结果为零就跳过下一个指令 1 Decrement R,Skip if 0 DJZA R R-1->A 结果为零就跳过下一个指令 1 Decrement R,Please in A register, Skip if 0 INC R R+1->R Z 1 Increment R INCA R R+1->A Z 1 Increment R,Please in A JZ R R+1->R, 结果为零就跳过下一个指令 1 Increment R,Skip if 0 JZA R R+1->A, 结果为零就跳过下一个指令 1 Increment R,Place in the A regiser,Skipif 0 MOV R,A A->R 1 Move Data MOV A,R R->A Z 1 Move Data MOV R,R R->R Z 1 Move Data OR A,R A OR R ->A Z 1 Inclusive OR OR R,A A OR R->R Z 1 Inclusive OR SUB A,R R-A->A Z,C,DC 1 Subtract SUB R,A R-A->R Z,C,DC 1 Subtract XOR A,R A XOR R->A Z 1 Exclusive OR XOR R,A A XOR R->R Z 1 Exclusive OR 3.2.2. 面向位操作类指令(10条) 助记符号指令动作标志影响指令周期语言描述 BC R,B 0->R(B) 1 Bit Clear BS R,B 1->R(B) 1 Bit Set JBC R,B 如果R(B)=0,则跳过下一个指令 1 Bit Test, Skip if Clear JBS R,B 如果R(B)=1,则跳过下一个指令 1 Bit Test, Skip if Set RLC R R(N)->R(N+1)

相关文档