单片机指令系统 3.1 MCS-51指令简介 3.2 指令系统 3.1 MCS-51指令简介 二、MCS-51系列单片机指令系统分类 按寻址方式分为以下七种:按功能分为以下四种: 1、立即立即寻址 1、数据传送指令位操 2、直接寻址 2、算术运算指令 3、寄存器寻址 3、逻辑运算指令 4、寄存器间接寻址指令 4、控制转移类指令 5、相对寻址 5、位操作指令 6、变址寻址 7、位寻址 三、寻址方式 3、寄存器间接寻址 MOV A, @R1 操作数是通过寄存器间接得到的。 4、立即寻址 MOV A, #40H 操作数在指令中直接给出。 5、基址寄存器加变址寄存器寻址 以DPTR或PC为基址寄存器,以A为变址寄存器, 以两者相加形成的16位地址为操作数的地址。 MOVC A, @A+DPTR MOVC A, @A+PC 四、指令中常用符号说明 Rn——当前寄存器区的8个工作寄存器R0~R7(n=0~7); Ri——当前寄存器区可作地址寄存器的2个工作寄存器R0和R1(i=0,1); direct——8位内部数据存储器单元的地址及特殊功能寄存器的地址; #data——表示8位常数(立即数); #datal6——表示16位常数; add 16——表示16位地址; addrll——表示11位地址; rel——8位带符号的地址偏移量; bit——表示位地址; @——间接寻址寄存器或基址寄存器的前缀; ( )——表示括号中单元的内容 (( ))——表示间接寻址的内容; 五、MCS-51指令简介 1. 以累加器A为目的操作数的指令 2. 以Rn为目的操作数的指令 3. 以直接地址为目的操作数的指令 4. 以寄存器间接地址为目的操作数指令 应用举例1 8段数码管显示 应用举例2 3.2 指令系统 2、堆栈操作指令 3. 累加器A与外部数据传输指令 4. 查表指令 MOVC A, @A+PC 例子: 5. 字节交换指令 6. 半字节交换指令 二、算术操作类指令 PSW寄存器 2. 带进位加法指令 3. 加1指令 4. 十进制调整指令 5. 带借位减法指令(Subtraction) 6. 减1指令(Decrease) 7. 乘法指令(Multiplication) 8. 除法指令(Division) 三、逻辑运算指令 1. 简单逻辑操作指令 2. 循环指令 带进位左循环指令(Rotate Accumulator Left through Carry flag) 右循环指令(Rotate Accumulator Right) 带进位右循环指令(Rotate A Right with C) 3. 逻辑与指令 4. 逻辑或指令 5. 逻辑异或指令 四、控制转移类指令 1. 跳转指令 相对转移指令 SJMP rel PC←(PC)+2 PC←(PC)+rel 程序中标号与地址之间的关系 2. 条件转移指令 3. 比较不相等转移指令 4. 减 1 不为 0 转移指令 5. 调用子程序指令 7. 中断返回指令 五、位操作指令 1. 数据位传送指令 2. 位变量逻辑指令 3. 条件转移类指令
上传时间: 2013-10-27
上传用户:xuanjie
8086指令系统目录 概述 2.1节 目录 2.1.1--2.1.5(传送) 2.1.1 目录:1~3 2.1.1-1 mov类例1 mov类例2 mov类例3 mov类例4(END) 2.1.1-2. xchg --3.XLAT 查表示意图(end) 2.1.2堆栈操作指令(1) 堆栈操作指令(2) 堆栈操作指令(3) 堆栈操作指令(4) 堆栈操作指令(5)(END) 2.1.3标志传送指令(1) 标志传送指令(2)(end) 2.1.4地址传送指令(1) 地址传送指令(2) 地址传送指令(3)(end) 2.1.5输入输出指令(1) 输入输出指令(2) 输入输出指令(3)(end) 2.2节 目录 2.2.1--2.2.6(算术) 2.2.1加法指令(1) 加法指令(2) 加法指令(3) 加法指令(4) 加法指令5 end 2.2.2减法指令(1) 减法指令(2) 减法指令(3) 减法指令(4) 减法指令(5) 减法指令(6)(end) 2.2.3乘法指令(1) 乘法指令(2) 乘法指令(3)(end) 2.2.4除法指令(1) 除法指令(2)(end) 2.2.5符号扩展指令(end) 符号扩展说明 2.2.6十进制调整指令(1) 十进制调整指令(2) 十进制调整指令(3) 十进制调整指令(4) 十进制调整指令(5) 十进制调整指令(6) 十进制调整指令(7) 十进制调整指令(8) 十进制调整指令(9)(end) 2.3节 目录 2.3.1--2. 3.3(位) 2.3.1 逻辑运算指令(1) 逻辑运算指令(2) 逻辑运算指令(3) 逻辑运算指令(4) 逻辑运算指令(END) 2.3.2 移位指令(1) 移位指令(2) 移位指令(3) 移位指令(4)(end) 2.3.3 循环移位指令(1) 循环移位指令(2)(end) 2.4节 目录 2.4.1 无条件转移指令(1) 短转移的转移范围 无条件转移指令(2) 无条件转移指令(3) 无条件转移指令(4)(end) 2.4.2 条件转移指令(1) 条件转移指令(2) 条件转移指令(3) 条件转移指令(4) 条件转移指令(5)(end) 2.4.3 循环控制指令(1) 循环控制指令(2)(end) 2.4.4 子程序调用及返回指令(1) 子程序调用及返回指令(2) 子程序调用及返回指令(3) 子程序调用及返回指令(4) 子程序调用及返回指令(5) 子程序调用及返回指令(6) (end) 2.4.5 中断控制指令(1) 中断控制指令(2) 中断控制指令(3) 中断控制指令(4) 中断控制指令(5) 中断控制指令(6) 中断控制指令(7) 中断控制指令(8)(end) 2.4.6 系统功能调用(1) 系统功能调用(2) 系统功能调用(3)(end) 2.5节 目录 1---6(串操作) 串操作(1)传送 串操作(2) 串操作(3) 串操作(4)存串 串操作(5)读串、比较 串操作(6)搜索、重复前缀 串操作(7)REP 串操作(8)REPZ/REPNZ 串操作(9)前缀注释 串操作(10)例题 串操作(11)注释(end) 2.6 处理机控制类指令(1)(end)
上传时间: 2013-10-30
上传用户:大三三
SPCE061A采用的内核 SPCE061A采用的内核(CPU)为μ‘nSP。 μ‘nSP(读做micro-n-S-P)是凌阳科技推出的16位微处理器,它的突出特点是较高的处理速度,这就使其有能力进行复杂的数字信号处理(DSP,Digital Signal Processing)。 μ‘nSP内核由凌阳自主开发,因而也具备它自己的指令系统。 指令系统.61 3.1 指令系统的概述及符号约定.61 3.2 数据传送指令62 3.3 算术运算..66 3.3.1 加法运算..67 3.3.2 减法运算..68 3.3.3 带进位的加减运算.70 3.3.4 取补运算..70 3.3.5 SPCE061A的乘法指令.71 3.3.6 SPCE061A的n项内积运算指令.71 3.3.7 比较运算(影响标志位N,Z,S,C)..73 3.4 SPCE061A的逻辑运算.74 3.4.1 逻辑与..74 3.4.2 逻辑或..75 3.4.3 逻辑异或..76 3.4.4 测试(TEST).78 3.4.5 SPCE061A的移位操作.80 3.5 SPCE061A的控制转移类指令..83 3.6 伪指令86 3.6.1 伪指令的语法格式及特点..87 3.6.2 伪指令符号约定..87 3.6.3 标准伪指令.87 3.6.4 宏定义与调用98 3.6.5 段的定义与调用101 3.6.6 结构的定义与调用..102 3.6.7 过程的定义与调用..106 3.6.8 伪指令的应用举例..106
上传时间: 2013-10-31
上传用户:xuanchangri
AVR单片机GCC程序设计:第一章 概述1.1 AVR 单片机GCC 开发概述1.2 一个简单的例子1.3 用MAKEFILE 管理项目1.4 开发环境的配置1.5 实验板CA-M8第二章 存储器操作编程2.1 AVR 单片机存储器组织结构2.2 I/O 寄存器操作2.3 SRAM 内变量的使用2.4 在程序中访问FLASH 程序存储器2.5 EEPROM 数据存储器操作2.6 avr-gcc 段结构与再定位2.7 外部RAM 存储器操作2.8 堆应用第三章 GCC C 编译器的使用3.1 编译基础3.2 生成静态连接库第四章 AVR 功能模块应用实验4.1 中断服务程序4.2 定时器/计数器应用4.3 看门狗应用4.4 UART 应用4.5 PWM 功能编程4.6 模拟比较器4.7 A/D 转换模块编程4.8 数码管显示程序设计4.9 键盘程序设计4.10 蜂鸣器控制第五章 使用C 语言标准I/O 流调试程序5.1 avr-libc 标准I/O 流描述5.2 利用标准I/0 流调试程序5.3 最小化的格式化的打印函数第六章 CA-M8 上实现AT89S52 编程器的实现6.1 编程原理6.2 LuckyProg2004 概述6.3 AT989S52 isp 功能简介6.4 下位机程序设计第七章 硬件TWI 端口编程7.1 TWI 模块概述7.2 主控模式操作实时时钟DS13077.3 两个Mega8 间的TWI 通信第八章 BootLoader 功能应用8.1 BootLoader 功能介绍8.2 avr-libc 对BootLoader 的支持8.3 BootLoader 应用实例8.4 基于LuckyProg2004 的BootLoader 程序第九章 汇编语言支持9.1 C 代码中内联汇编程序9.2 独立的汇编语言支持9.3 C 与汇编混合编程第十章 C++语言支持附录 1 avr-gcc 选项附录 2 Intel HEX 文件格式描述
上传时间: 2014-04-03
上传用户:ligi201200
基于AT89C2051的红外遥控学习器源程序6 源程序 ORG 0000H AJMP MAIN ORG 0003H AJMP KEYPRESS ORG 000BH AJMP TIMEOUT ORG 001BH AJMP TIMEOUT SENDDUAN BIT P3.0 JIEDUAN BIT P3.1 INTRPO BIT P3.2 JIEXUAN BIT P3.3 SENDLIGHT BIT P3.4 JIELIGHT BIT P3.5 CS BIT P3.7 DATADUAN BIT P1.6 CLK BIT P1.7 JIANWEI EQU R5 JIANMA EQU R6 SHANGJIAN EQU 07H;R7 OPENKEY EQU 81H CLOSEKEY EQU 00H CHUT0 EQU 11H CHUT1 EQU 11H BUFBEGIN EQU 18H OPENT1 EQU 88H CLOSET1 EQU 00H OPENT0 EQU 82H CLOSET0 EQU 00H DATABEG1 EQU 0AAH DATABEG2 EQU 33H ORG 0030HMAIN: MOV IE,#80H MOV IP,#00H MOV P3,#0FFH CLR CS SETB P1.0 SETB P1.1 SETB P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 CLR P1.7 MOV R3,#80H MOV R0,00HCYCLE1: MOV @R0,#00H INC R0 DJNZ R3,CYCLE1 MOV PSW,#00H MOV SP,#07H MOV TMOD,#11H MOV TCON,#00H START: MOV SP,#07H SETB SENDDUAN CLR F0 SETB EXOWAITKEY: MOV C,F0 JNC WAITKEY CJNC JIANMA,#1BH,SEND LCALL LEARNP LJMP STARTSEND: LCALL SENDP LJMP START SENDP: SETB SENDDUAN CLR F0 MOV TMOD,#CHUT1
上传时间: 2013-10-15
上传用户:lyy1234
24c16读写驱动程序,//=-------------------------------------------------------------------------------/*模块调用:读数据:read(unsigned int address)写数据:write(unsigned int address,unsigned char dd) dd为要写的 数据字节*///------------------------------------------------------------------------------ sbit sda=P3^0;sbit scl=P3^1; sbit a0=ACC^0; //定义ACC的位,利用ACC操作速度最快sbit a1=ACC^1;sbit a2=ACC^2;sbit a3=ACC^3;sbit a4=ACC^4;sbit a5=ACC^5;sbit a6=ACC^6;sbit a7=ACC^7; //------------------------------------------------------------------------------#pragma disablevoid s24(void) //起始函数{_nop_(); scl=0; sda=1; scl=1; _nop_(); sda=0; _nop_(); _nop_(); scl=0; _nop_(); _nop_(); sda=1;} //------------------------------------------------------------------------------#pragma disablevoid p24(void) //停止函数{sda=0; scl=1; _nop_(); _nop_(); sda=1;} //-----------------------------------------------------------------------------#pragma disableunsigned char rd24(void) /////////////////从24c16读一字节数据{ ACC=0x00;sda=1;scl=1;a7=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a6=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a5=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a4=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a3=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a2=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a1=sda;_nop_();_nop_();_nop_();_nop_();scl=0;scl=1;a0=sda;_nop_();_nop_();_nop_();_nop_();scl=0;sda=1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0; /// ///////////////24c16的一位回答位。return(ACC);}//------------------------------------------------------------------------------#pragma disablevoid wd24(unsigned char dd) ////////////////向24c16写一字节数据{ sda=1;ACC=dd;sda=a7;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a6;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a5;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a4;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a3;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a2;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a1;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=a0;scl=1;_nop_();_nop_();_nop_();_nop_();scl=0;sda=0;scl=1;//scl=0;(在下面程序中)}//---------------------------------------------------------------------------#pragma disableunsigned char read(unsigned int address){unsigned char dd; s24(); ////////////////////////开始条件 wd24(0xa0); /////////////////////////写器件地址(写命令) _nop_();_nop_();_nop_();_nop_(); scl=0; ///////////////////////////////////接收器件地址确认信号 wd24(address); //////////////////////////// 写数据地址 _nop_();_nop_();_nop_();_nop_(); scl=0;s24(); ///////////////////////////////////开始条件 wd24(0xa1); /////////////////////////////写器件地址(读命令) scl=0; dd=rd24(); //////////////////////////////////读 一字节 p24(); ////////////////////////////////////停止条件 return(dd);}//------------------------------------------------------------------------------#pragma disablevoid write(unsigned int address,unsigned char dd){s24(); /////////////////开始条件 wd24(0xa0); ////////////////////////写器件地址; scl=0; wd24(address); /////////////////////写数据地址 scl=0; wd24(dd); //////////////////////////写dd数据 scl=0; p24(); /////////////////////////停止条件; }
上传时间: 2013-11-18
上传用户:墙角有棵树
6.1 存储器概述1、存储器定义 在微机系统中凡能存储程序和数据的部件统称为存储器。2、存储器分类 微机系统中的存储器分为内存和外存两类。3、内存储器的组成 微机系统中的存储器由半导体存储器芯片组成。 单片机内部有存储器,当单片机内部的存储器不够用时,可以外扩存储器。外扩的存储器就是由半导体存储器芯片组成的。 当用半导体存储器芯片组成内存时必须满足个要求:①每个存储单元一定要有8个位。②存储单元的个数满足系统要求。注意:内存的容量是指它所含存储单元的个数(每个存储单元一定要有8个位,可以存储8位二进制信息)。6.2 半导体存储器由于集成工艺水平的限制,一个半导体存储器芯片上所集成的单元个数和每个单元的位数有限,用它构成内存时必须满足:内存容量和一个存储单元有8个位的要求,因此内存常常由多个半导体存储器芯片构成。 半导体存储器芯片的存储容量是指其上所含的基本存储电路的个数,用单元个数×位数表示。掌握:① 已知内存容量和半导体存储器芯片的容量,求用半导体存储器芯片构成内存时需要的芯片个数。② 内存的容量=末地址—首地址+1 半导体存储器芯片分成ROM和RAM两类。6.2.1 ROM芯片6.2.2 RAM芯片6.3 MCS-51单片机存储器扩展 在微机系统中存储器是必不可少。MCS51系列单片机内部的存储器不够用时需要外扩半导体存储器芯片,外扩的半导体存储器芯片与MCS51系列单片机通过三总线交换信息。二者连接时必须考虑如下问题:1.二者地址线、数据线、控制线的连接。2.工作速度的匹配。CPU在取指令和存储器读或写操作时,是有固定时序的,用户要根据这些来确定对存储器存取速度的要求,或在存储器已经确定的情况下,考虑是否需要Tw周期,以及如何实现。3.片选信号的产生。目前生产的存储器芯片,单片的容量仍然是有限的,通常总是要由许多片才能组成一个存储器,这里就有一个如何产生片选信号的问题。4.CPU的驱动能力 。在设计CPU芯片时,一般考虑其输出线的直流负载能力,为带一个TTL负载。现在的存储器一般都为MOS电路,直流负载很小,主要的负载是电容负载,故在小型系统中,CPU是可以直接与存储器相连的,而较大的系统中,若CPU的负载能力不能满足要求,可以(就要考虑CPU能否带得动,需要时就要加上缓冲器,)由缓冲器的输出再带负载。6.3.1 ROM芯片的扩展6.3.2 RAM芯片的扩展
标签: 存储器接口
上传时间: 2013-11-22
上传用户:moerwang
AVR高速嵌入式单片机原理与应用(修订版)详细介绍ATMEL公司开发的AVR高速嵌入式单片机的结构;讲述AVR单片机的开发工具和集成开发环境(IDE),包括Studio调试工具、AVR单片机汇编器和单片机串行下载编程;学习指令系统时,每条指令均有实例,边学习边调试,使学习者看得见指令流向及操作结果,真正理解每条指令的功能及使用注意事项;介绍AVR系列多种单片机功能特点、实用程序设计及应用实例;作为提高篇,讲述简单易学、适用AVR单片机的高级语言BASCOMAVR及ICC AVR C编译器。 AVR高速嵌入式单片机原理与应用(修订版) 目录 第一章ATMEL单片机简介1.1ATMEL公司产品的特点11.2AT90系列单片机简介21.3AT91M系列单片机简介2第二章AVR单片机系统结构2.1AVR单片机总体结构42.2AVR单片机中央处理器CPU62.2.1结构概述72.2.2通用寄存器堆92.2.3X、Y、Z寄存器92.2.4ALU运算逻辑单元92.3AVR单片机存储器组织102.3.1可下载的Flash程序存储器102.3.2内部和外部的SRAM数据存储器102.3.3EEPROM数据存储器112.3.4存储器访问和指令执行时序112.3.5I/O存储器132.4AVR单片机系统复位162.4.1复位源172.4.2加电复位182.4.3外部复位192.4.4看门狗复位192.5AVR单片机中断系统202.5.1中断处理202.5.2外部中断232.5.3中断应答时间232.5.4MCU控制寄存器 MCUCR232.6AVR单片机的省电方式242.6.1休眠状态242.6.2空闲模式242.6.3掉电模式252.7AVR单片机定时器/计数器252.7.1定时器/计数器预定比例器252.7.28位定时器/计数器0252.7.316位定时器/计数器1272.7.4看门狗定时器332.8AVR单片机EEPROM读/写访问342.9AVR单片机串行接口352.9.1同步串行接口 SPI352.9.2通用串行接口 UART402.10AVR单片机模拟比较器452.10.1模拟比较器452.10.2模拟比较器控制和状态寄存器ACSR462.11AVR单片机I/O端口472.11.1端口A472.11.2端口 B482.11.3端口 C542.11.4端口 D552.12AVR单片机存储器编程612.12.1编程存储器锁定位612.12.2熔断位612.12.3芯片代码612.12.4编程 Flash和 EEPROM612.12.5并行编程622.12.6串行下载662.12.7可编程特性67第三章AVR单片机开发工具3.1AVR实时在线仿真器ICE200693.2JTAG ICE仿真器693.3AVR嵌入式单片机开发下载实验器SL?AVR703.4AVR集成开发环境(IDE)753.4.1AVR Assembler编译器753.4.2AVR Studio773.4.3AVR Prog783.5SL?AVR系列组态开发实验系统793.6SL?AVR*.ASM源文件说明81第四章AVR单片机指令系统4.1指令格式844.1.1汇编指令844.1.2汇编器伪指令844.1.3表达式874.2寻址方式894.3数据操作和指令类型924.3.1数据操作924.3.2指令类型924.3.3指令集名词924.4算术和逻辑指令934.4.1加法指令934.4.2减法指令974.4.3乘法指令1014.4.4取反码指令1014.4.5取补指令1024.4.6比较指令1034.4.7逻辑与指令1054.4.8逻辑或指令1074.4.9逻辑异或指令1104.5转移指令1114.5.1无条件转移指令1114.5.2条件转移指令1144.6数据传送指令1354.6.1直接数据传送指令1354.6.2间接数据传送指令1374.6.3从程序存储器直接取数据指令1444.6.4I/O口数据传送指令1454.6.5堆栈操作指令1464.7位指令和位测试指令1474.7.1带进位逻辑操作指令1474.7.2位变量传送指令1514.7.3位变量修改指令1524.7.4其它指令1614.8新增指令(新器件)1624.8.1EICALL-- 延长间接调用子程序1624.8.2EIJMP--扩展间接跳转1634.8.3ELPM--扩展装载程序存储器1644.8.4ESPM--扩展存储程序存储器1644.8.5FMUL--小数乘法1664.8.6FMULS--有符号数乘法1664.8.7FMULSU--有符号小数和无符号小数乘法1674.8.8MOVW--拷贝寄存器字1684.8.9MULS--有符号数乘法1694.8.10MULSU--有符号数与无符号数乘法1694.8.11SPM--存储程序存储器170 第五章AVR单片机AT90系列5.1AT90S12001725.1.1特点1725.1.2描述1735.1.3引脚配置1745.1.4结构纵览1755.2AT90S23131835.2.1特点1835.2.2描述1845.2.3引脚配置1855.3ATmega8/8L1855.3.1特点1865.3.2描述1875.3.3引脚配置1895.3.4开发实验工具1905.4AT90S2333/44331915.4.1特点1915.4.2描述1925.4.3引脚配置1945.5AT90S4414/85151955.5.1特点1955.5.2AT90S4414和AT90S8515的比较1965.5.3引脚配置1965.6AT90S4434/85351975.6.1特点1975.6.2描述1985.6.3AT90S4434和AT90S8535的比较1985.6.4引脚配置2005.6.5AVR RISC结构2015.6.6定时器/计数器2125.6.7看门狗定时器 2175.6.8EEPROM读/写2175.6.9串行外设接口SPI2175.6.10通用串行接口UART2175.6.11模拟比较器 2175.6.12模数转换器2185.6.13I/O端口2235.7ATmega83/1632285.7.1特点2285.7.2描述2295.7.3ATmega83与ATmega163的比较2315.7.4引脚配置2315.8ATtiny10/11/122325.8.1特点2325.8.2描述2335.8.3引脚配置2355.9ATtiny15/L2375.9.1特点2375.9.2描述2375.9.3引脚配置2395 .10ATmega128/128L2395.10.1特点2405.10.2描述2415.10.3引脚配置2435.10.4开发实验工具2455.11ATmega1612465.11.1特点2465.11.2描述2475.11.3引脚配置2475.12AVR单片机替代MCS51单片机249第六章实用程序设计6.1程序设计方法2506.1.1程序设计步骤2506.1.2程序设计技术2506.2应用程序举例2516.2.1内部寄存器和位定义文件2516.2.2访问内部 EEPROM2546.2.3数据块传送2546.2.4乘法和除法运算应用一2556.2.5乘法和除法运算应用二2556.2.616位运算2556.2.7BCD运算2556.2.8冒泡分类算法2556.2.9设置和使用模拟比较器2556.2.10半双工中断方式UART应用一2556.2.11半双工中断方式UART应用二2566.2.128位精度A/D转换器2566.2.13装载程序存储器2566.2.14安装和使用相同模拟比较器2566.2.15CRC程序存储的检查2566.2.164×4键区休眠触发方式2576.2.17多工法驱动LED和4×4键区扫描2576.2.18I2C总线2576.2.19I2C工作2586.2.20SPI软件2586.2.21验证SLAVR实验器及AT90S1200的口功能12596.2.22验证SLAVR实验器及AT90S1200的口功能22596.2.23验证SLAVR实验器及具有DIP40封装的口功能第七章AVR单片机的应用7.1通用延时子程序2607.2简单I/O口输出实验2667.2.1SLAVR721.ASM 2667.2.2SLAVR722.ASM2677.2.3SLAVR723.ASM2687.2.4SLAVR724.ASM2707.2.5SLAVR725.ASM2717.2.6SLAVR726.ASM2727.2.7SLAVR727.ASM2737.3综合程序2747.3.1LED/LCD/键盘扫描综合程序2747.3.2LED键盘扫描综合程序2757.3.3在LED上实现字符8的循环移位显示程序2757.3.4电脑放音机2777.3.5键盘扫描程序2857.3.6十进制计数显示2867.3.7廉价的A/D转换器2897.3.8高精度廉价的A/D转换器2947.3.9星星灯2977.3.10按钮猜数程序2987.3.11汉字的输入3047.4复杂实用程序3067.4.110位A/D转换3067.4.2步进电机控制程序3097.4.3测脉冲宽度3127.4.4LCD显示8字循环3187.4.5LED电脑时钟3247.4.6测频率3307.4.7测转速3327.4.8AT90S8535的A/D转换334第八章BASCOMAVR的应用8.1基于高级语言BASCOMAVR的单片机开发平台3408.2BASCOMAVR软件平台的安装与使用3418.3AVR I/O口的应用3458.3.1LED发光二极管的控制3458.3.2简易手控广告灯3468.3.3简易电脑音乐放音机3478.4LCD显示器3498.4.1标准LCD显示器的应用3498.4.2简单游戏机--按钮猜数3518.5串口通信UART3528.5.1AVR系统与PC的简易通信3538.5.2PC控制的简易广告灯3548.6单总线接口和温度计3568.7I2C总线接口和简易IC卡读写器359第九章ICC AVR C编译器的使用9.1ICC AVR的概述3659.1.1介绍ImageCraft的ICC AVR3659.1.2ICC AVR中的文件类型及其扩展名3659.1.3附注和扩充3669.2ImageCraft的ICC AVR编译器安装3679.2.1安装SETUP.EXE程序3679.2.2对安装完成的软件进行注册3679.3ICC AVR导游3689.3.1起步3689.3.2C程序的剖析3699.4ICC AVR的IDE环境3709.4.1编译一个单独的文件3709.4.2创建一个新的工程3709.4.3工程管理3719.4.4编辑窗口3719.4.5应用构筑向导3719.4.6状态窗口3719.4.7终端仿真3719.5C库函数与启动文件3729.5.1启动文件3729.5.2常用库函数3729.5.3字符类型库3739.5.4浮点运算库3749.5.5标准输入/输出库3759.5.6标准库和内存分配函数3769.5.7字符串函数3779.5.8变量参数函数3799.5.9堆栈检查函数3799.6AVR硬件访问的编程3809.6.1访问AVR的底层硬件3809.6.2位操作3809.6.3程序存储器和常量数据3819.6.4字符串3829.6.5堆栈3839.6.6在线汇编3839.6.7I/O寄存器3849.6.8绝对内存地址3849.6.9C任务3859.6.10中断操作3869.6.11访问UART3879.6.12访问EEPROM3879.6.13访问SPI3889.6.14相对转移/调用的地址范围3889.6.15C的运行结构3889.6.16汇编界面和调用规则3899.6.17函数返回非整型值3909.6.18程序和数据区的使用3909.6.19编程区域3919.6.20调试3919.7应用举例*3929.7.1读/写口3929.7.2延时函数3929.7.3读/写EEPROM3929.7.4AVR的PB口变速移位3939.7.5音符声程序3939.7.68字循环移位显示程序3949.7.7锯齿波程序3959.7.8正三角波程序3969.7.9梯形波程序396附录1AT89系列单片机简介398附录2AT94K系列现场可编程系统标准集成电路401附录3指令集综合404附录4AVR单片机选型表408参 考 文 献412
上传时间: 2013-11-08
上传用户:xcy122677
PLC TM卡开发系统汇编程序(ATM8051) ;***************** 定义管脚*************************SCL BIT P1.0SDA BIT P1.1GC BIT P1.2BZ BIT P3.6LEDI BIT P1.4LEDII BIT P1.5OK BIT 20H.1OUT1 BIT P1.3OUT2 BIT P1.0OUT3 BIT P1.1RXD BIT P3.0TXD BIT P3.1PCV BIT P3.2WPC BIT P3.3RPC BIT P3.5LEDR BIT P3.4LEDL BIT P3.6TM BIT P3.7;********************定义寄存器***********************ROMDTA EQU 30H;NUMBY EQU 61H;SLA EQU 60H;MTD EQU 2FH;MRD EQU 40H;TEMP EQU 50H;;ORG 00H;;INDEX:MOV P1, #00H;MOV P2, #0FFHMOV MTD ,#00HCALL REEMOV R0,40HCJNE R0,#01,NO;MOV P2,#1CHLJMP VIMEN MOV P2,#79HACALL TOUCHRESET ;JNC NO ;CALL READTM ;CJNE A,#01H,NO;NOPMOV MTD, #00HCALL WEENOPMOV P2,#4AHSETB BZCALL TIMECLR BZMOV PCON, #0FFHVIME:CALL TIME1CALL TOUCHRESETJNC VIMECALL READTMCJNE A, #01H,VIME;NOPNOPNOPIII: MOV MTD,#00HCALL REECALL BBJNB OK,NO1LJMP ZHUNO1:MOV MTD,#10H
上传时间: 2014-03-24
上传用户:448949
Keil Cx51 V7.0单片机高级语言编程与uVision2应用实践详细介绍了KeilCx51V7.机C语言编译器和全新Windows集成开发环境μVision2的强大功能和具体使用方法。全面介绍了最新版本Cx51编译器新增加的控制命令,给出了全部Cx51运行库函数及其应用范例,对KeilCx51软件包中各种应用工具,如BL51/Lx51连接定位器、A51/Ax51宏汇编器、LIB51库管理程序以及OH51符号转换程序等都作了详细介绍,还介绍了单片机实时多任务操作系统RTX51及其子集RTX51TINY的具体功能与应用方法。μVision2已经将调试器功能集成于其中,用户可以在单一环境下完成从源程序编写、编译、连接定位一直到目标文件的仿真调试等全部工作,书中详细介绍了μVision2各种功能和应用,包括软件模拟调试和硬件目标板实时在线仿真。第1章 851单片机与KeilCx51基础 1.1 851单片机的存储器组织结构 1.2 KeilCx51开发工具 1.3 Cx51简单编程与调试第2章 Cx51程序设计基础 2.1 标识符与关键字 2.2 Cx51程序设计的基本语法 2.2.1 数据类型 2.2.2 常量 2.2.3 变量及其存储模式 2.2.4 用typedef重新定义数据类型 2.2.5 运算符与表达式 2.3 Cx51程序的基本语句 2.3.1 表达式语句 2.3.2 复合语句 2.3.3 条件语句 2.3.4 开关语句 2.3.5 循环语句 2.3.6 返回语句第3章 函数 3.1 函数的定义; 3.2 函数的调用 3.2.1 函数的调用形式 3.2.2 对被调用函数的说明 3.2.3 函数的参数和函数的返回值 3.2.4 实际参数的传递方式 3.3 函数的递归调用与再入函数
上传时间: 2014-01-16
上传用户:edisonfather