求单片机高手帮忙告诉下解题过程,详细点
10.假定A=45H,B=67H。执行指令: MUL AB
后,寄存器B=1BH,累加器A=C3H,CY=0,OV=1。
11.假定A=0FCH,B=35H。执行指令:DIV AB
后,累加器A= 04H ,寄存器B= 35H ,CY= 0 ,OV= 0
注:你11结果中B=35H 是不对的,应该为0
#include"reg51.h"#define uint unsigned int#define uchar unsigned charuchar PWM=0x7f;//设置初始脉宽调制值为128sbit ENA=P3^4;//电机启动控制位 void INTT0()interrupt 0//外部中断0中断处理函数,低电平触发,实现对脉宽PWM的增加{if(PWM0){PWM--;}elsePWM=0x00;}void timer0()interrupt 1//定时器0中断处理函数{TR1=0;TH0=0xfe;//重装定时器0初值TL0=0x66;TH1=PWM;//重装定时器1初值TR1=1;//启动定时器1ENA=0;//启动电机}void timer1()interrupt 3//定时器1中断处理函数{TR1=0;ENA=1;}void INT_init(void){TMOD=0x21;//定时器1工作于模式2(自动重装方式),定时器0工作于模式1(16位定时)TH0=0xfc;//设置定时器0,定时初值,12MHz约定时900多usTL0=0x66;TH1=PWM;//设置定时器1,定时初值,12MHz约定时128usTL1=0;EA=1;//总中断允许EX0=1;//允许外部中断0EX1=1;//允许外部中断1ET0=1;//允许定时器0中断ET1=1;//允许定时器1中断TR0=1;//启动定时器0}void main(void){INT_init();while(1);}
MOV A,#0FBH----A=251MOV B,#12H----B=18
DIV AB------251 / 18 = 13...17
商:A = 13 = 0DH
余:B = 17 = 11H
MOV A,#0FBH,将 0xFB(251) 赋值给 累加器A;
MOV B,#12H,将 0x12(18)赋值给 寄存器B;
DIV AB, A ÷B,商 放在 A 上,余数 放在 B 上,251÷18=13......17,于是 A=13,B=17
答:最简单的程序如下:ORG 0000H AJMP MAIN ORG 0030H MAIN:CLR A MOV 50H, A MOV 51H, A MOV 52H, A MOV R0, #60H LOOP:MOV A, @R0 JZ _0 JB ACC.7, FU INC 50H SJMP NEXT FU: INC 51H SJMP NEXT _0: INC 52H NEXT: INC R0 CJNE R0, #60H+...
答:30H、31H、32H单元内容清零 好装统计的结果。循环体: 将数据指针所指的片外数据存储器单元中的数据传送给累加器A,然后判断,如果是正数 则30H单元内容加1;如果是负数则31H单元内容加1;如果是0 则32H单元内容加1。循环控制部分: 修改数据指针 指向下一个单元的数据,循环次数减1,...
答:1、(1)设A=6CH,CY=1,执行RRC后,A=( 0B6H ),CY=( 0 )。(2)、执行下列程序段后,(A)=( 62H )Cy=( 1 )(Y是下标啊)CLR C MOVA A,#B1H RLC A 3、(1)下列程序段执行后,(R0)=(7FH ),(7EH)=( 00H ),(7FH)=( 40H )。MOV R...
答:LP2: MOVX A,@DPTR 从下个地址取数,第一次运行到这里指向A=65H ADDC A,@R0 A=65H+96H DA A 这步最麻烦了,把上一行的结果转换成BCD结果,貌似是61H MOVX @DPTR,A 把61H送回去8004H,INC DPTR 96+65=61H--8004 74+94+C=69H--8005 INC R0...
答:1。CBA=000时,Y1为低电平,选中左数第一个芯片CBA=001时,Y1为低电平,选中左数第二个芯片CBA=010时,Y1为低电平,选中左数第三个芯片CBA=011时,Y1为低电平,选中左数第四个芯片2。左数第三个芯片范围是:4000H~5FFFH3。对于这里4颗IC,总地址范围为0000H~6FFFH,即容量(7000H)Byte,...
答:若晶振频率Fosc=12MHz,机器周期 = 12/Fosc = 12/(12x10^6Hz) =1μs 执行 DJNZ Rn, rel 指令耗用2个机器周期,即2μs 该段程序执行该类指令总次数=250x200x10=500000 耗用时间 = 500000x2μs = 10^6μs =1s 若改为延时0.1 第三行指令改为 LOOP1: MOV R1, #01 若改为延时0...
答:1、答案:00H,LCALL调用把地址0221H放到堆栈中,先低后高,所以08H是00H,PC也会变化,这里就不说了 2、十进制变成二进制不能一位对应四位,那个是十六进制变成2进制的方法。。。
答:1.ADD A,RO ---A=0FH+30H=3FH, C=0 2.ADD A,#30H---A=3FH+30H=6FH, C=0 2.INC A ---A=6FH+1=70H C=0 3.SUBB A,#30H ---A=70H-30H=40H C=0 4.RL A ---A=80H C=0 5.CPL A ---A=7FH C=0 6.ANL A,R0 ---A=30 ...
答:ORG 000H ;00h复位入口 AJMP MAIN ;跳到MAIN ORG 000BH ;定时器0中断入口 LJMP PT0J ;跳到PT0J ORG 0100H ;MAIN主程序入口 MAIN: MOV TMOD,#05H ;模式寄存器配置定时器0为16位计数器,p3.4为计数器脉冲输入 MOV TH0,#0FFH ;配置计数器初值0FF9CH,...
答:1.未知数X存在30H单元,试编写程序计算Y=3X+7,并将结果存入通用寄存器R1 MOV A, 30H MOV B, #03H MUL AB ADD A, #07H MOV R1, A END 2.片内RAN的30H,31H和32H单元分别存了三个无符号数。试编写程序将这三个数相加,并将相加的结果的低字节存入75H单元,高字节存入76H MOV...