51单片机-查表指令
- 格式:ppt
- 大小:267.50 KB
- 文档页数:13
ls的乱写PC = progammer counter //程序计数器ACC = accumulate //累加器PSW = progammer status word //程序状态字SP = stack point //堆栈指针DPTR = data point register //数据指针寄存器IP = interrupt priority //中断优先级IE = interrupt enable // 中断使能TMOD = timer mode //定时器方式(定时器/计数器控制寄存器)ALE = alter (变更,可能是)PSEN = progammer saving enable //程序存储器使能(选择外部程序存储器的意思) EA = enable all(允许所有中断)完整应该是enable all interruptPROG = progamme (程序)SFR = special funtion register //特殊功能寄存器TCON = timer control //定时器控制PCON = power control //电源控制MSB = most significant bit//最高有效位LSB = last significant bit//最低有效位CY = carry //进位(标志)AC = assistant carry //辅助进位OV = overflow //溢出ORG = originally //起始来源DB = define byte //字节定义EQU = equal //等于DW = define word //字定义E = enable //使能OE = output enable //输出使能RD = read //读WR = write //写中断部分:INT0 = interrupt 0 //中断0INT1 = interrupt 1//中断1T0 = timer 0 //定时器0T1 = timer 1 //定时器1TF1 = timer1 flag //定时器1 标志(其实是定时器1中断标志位)IE1 = interrupt exterior //(外部中断请求,可能是)IT1 = interrupt touch //(外部中断触发方式,可能是)ES = enable serial //串行使能ET = enable timer //定时器使能EX = enable exterior //外部使能(中断)PX = priority exterior //外部中断优先级PT = priority timer //定时器优先级PS = priority serial //串口优先级全局变量与局部变量c51中如何实现对全局变量的声明,注意项目含有多个文件,要声明一个全局变量,使得各模块都能使用该变量。
51单⽚机查表指令51单⽚机查表指令51单⽚机具有两条查表指令,⽤于从 ROM 中读出预存的数据:MOVC A, @A + PCMOVC A, @A + DPTR问题:在“MOVC A,@A+DPTR”和“MOVC A,@A+PC”中,分别使⽤了DPTR和PC作基址,请问这两个基址代表什么地址?使⽤中有何不同?答案:使⽤@A+DPTR基址变址寻址时,DPTR为常数且是表格的⾸地址,A为从表格⾸址到被访问字节地址的偏移量。
使⽤@A+PC基址变址寻址时,PC仍是下条指令⾸地址,⽽A则是从下条指令⾸地址到常数表格中的被访问字节的偏移量。
PC是程序计数器,DPTR是数据指针。
⽤这个MOVC A,@A+DPTR⽐较⽅便的,DPTR是16位。
范围⼴。
建议使⽤。
这两条都是查表指令,MOVC A,@A+PC,只能给累加器A赋值,所以只能查这条指令所在地址以后256字节范围内的代码或常数。
⽽MOVC A,@A+DPTR,可以给DPTR赋给任何⼀个16位的地址值,所以查表范围可达整个程序存储器64K字节空间的代码或常数。
其中前⼀条指令的⽤法,⽐较难,使⽤的时候,需要计算⼀个“偏移量”。
不了解“指令的字节数”的⼈,都不清楚应该如何计算。
做⽽论道曾在以前的⽂章中,介绍过“偏移量”的⾃动计算⽅法,可见如下链接:--------------------最佳答案:51单⽚机汇编语⾔有⼀条查表指令是:MOVC A, @A + DPTR它不是单独使⽤的,要和 DB 伪指令配套使⽤。
例如:若累加器A中有⼀个0~9的数,请⽤查表法求出该数的平⽅值,设平⽅表表头地址为1000H。
程序如下:;-------------------------------------MOV DPTR, #1000HMOVC A, @A + DPTR……ORG 1000HDB 0, 1, 4, 9, 16, 25......;-------------------------------------DB 伪指令从 ROM 1000H 开始,顺序存放了⼀系列的“平⽅”数据。
常见51单片机指令及详解数据传递类指令(1)以累加器为目的操作数的指令MOV A,RnMOV A,directMOV A,@RiMOV A,#data第一条指令中,Rn代表的是R0-R7。
第二条指令中,direct就是指的直接地址,而第三条指令中,就是我们刚才讲过的。
第四条指令是将立即数data送到A中。
下面我们通过一些例子加以说明:MOV A,R1 ;将工作寄存器R1中的值送入A,R1中的值保持不变。
MOV A,30H ;将内存30H单元中的值送入A,30H单元中的值保持不变。
MOV A,@R1 ;先看R1中是什么值,把这个值作为地址,并将这个地址单元中的值送入A中。
如执行命令前R1中的值为20H,则是将20H单元中的值送入A中。
MOV A,#34H ;将立即数34H送入A中,执行完本条指令后,A中的值是34H。
(2)以寄存器Rn为目的操作的指令MOV Rn,AMOV Rn,directMOV Rn,#data这组指令功能是把源地址单元中的内容送入工作寄存器,源操作数不变。
(3)以直接地址为目的操作数的指令MOV direct,A 例: MOV 20H,AMOV direct,Rn MOV 20H,R1MOV direct1,direct2 MOV 20H,30HMOV direct,@Ri MOV 20H,@R1MOV direct,#data MOV 20H,#34H(4)以间接地址为目的操作数的指令MOV @Ri,A 例:MOV @R0,AMOV @Ri,direct MOV @R1,20HMOV @Ri,#data MOV @R0,#34H(5)十六位数的传递指令MOV DPTR,#data168051是一种8位机,这是唯一的一条16位立即数传递指令,其功能是将一个16位的立即数送入DPTR中去。
其中高8位送入DPH,低8位送入DPL。
例:MOV DPTR,#1234H,则执行完了之后DPH中的值为12H,DPL中的值为34H。
单片机0一、填空题1.在8051汇编指令格式中,唯一不能缺省的部分是。
2.当MCS-51执行MOVC A,@A+PC指令时,伴随着PSEN 读控制信号有效。
3.当MCS-51单片机复位时PSW=00H,这时当前的工作寄存器区是0 区,R4所对应的存储单元地址为04 H。
4.MCS-51有4个并行I\O口,其中P0—P3是准双向口,所以,由输出转输入时必须先写入 1 。
5.MCS-51的堆栈是软件填写堆栈指针临时在内部RAM 内开辟的区域.6.在MCS-51单片机应用系统中,外部设备与外部数据存储器传送数据时,使用MOVEX 指令。
二、单选题1.MCS-51系列单片机的指令系统共(A)条指令。
A、111B、112C、113D、1152.在CPU内部,反映程序运行状态或反映运算结果的寄存器是(B )。
A、PCB、PSWC、AD、SP3.外扩程序存储器的高8位地址来自(C )口。
A、P0B、P1C、P2D、P34.要访问MCS-51的特殊功能寄存器应选用的寻址方式是(C)。
A、寄存器间接寻址B、变址寻址C、直接寻址D、相对寻址5.MCS-51的并行I/O口信息有两种读取方法,一种是读引脚,还有一种是(A )。
A、读锁存器B、读数据C、读A累加器D、读CPU6.8051单片机中,唯一一个用户可以使用的16位寄存器是(D)。
A、PSWB、ACCC、SPD、DPTR7.指令MOV A ,20H的字节数是(B )。
A、1B、2C、3D、48.下列指令能使累加器A的最高位置1的是(D )。
A、ANL A,#7FHB、ANL A,#80HC、ORL A,#7FHD、ORL A,#80H9.8031单片机的定时器T1用作计数方式时(A )。
A、外部计数脉冲由T1(P3.5)输入B、外部计数脉冲由内部时钟频率提供C、外部计数脉冲由T0(P3.4)输入D、以上均不是10.指令 MOV R0,#20H中的20H是指(A)。