一道单片机的编程题

作者&投稿:笃芬 (若有异议请与网页底部的电邮联系)
帮我做一道单片机的编程题目!~

不知道你用什么芯片,这里就拿计算机的汇编来演示一下怎么算吧
因为单片机没有乘法运算,所以不能用乘法指令,但是我们可以用移位指令实现
mov
al,31h
mov
ah,30h
shl
al,1
;左移一位
rcl
ah,1
;带进位循环左移
这样就可以了,因为单片机都是8位的寄存器,所以我也用8位来演示,命令你可以对照你的芯片的命令稍作改变就可以了,左移一位就是乘
2

测试通过的,上面那个程序漏了一句关键性的语句,一个数据定义错误。下面是更改通过的。
MOV R1,#0
MOV R0,#20H
REGAIN:
CJNE R0,#51H,KK
MOV 51H, R1
SJMP $
KK:
MOV A,@R0
JNZ LOOP
INC R1
LOOP:
INC R0
SJMP REGAIN

END

现假定左边是地址,右边的是内容
1.它的功能是以50H为首地址,个数为0AH个的RAM全部清零

2.机器码
7A 0A··········MOV R2,#0AH
mov rn的机器码是01111xxx,其中xxx由Rn的地址来决定,相应地,R0~R7二进制地址为000~111
那么R2就是010,后面的数据就跟着mov rn的机器码后面

7850··········MOV R0,#50H
E4 ···········CLR A;
机器码固定
F6 ·········LOOP:MOV @R0,A

mov @rn,a机器码为1111011n
n就是Rn的n
所以间接寄存器寻址只能是R1或R0

08 ············INC R0
inc rn机器码为00001xxx
xxx同理为Rn的物理地址

DA__ ···········DJNZ R2,LOOP
djnz rn机器码11011xxx
xxx同理为RN的物理地址
loop为8位地址标号
机器码是以loop为首的第一个指令离loop的单元数
所以djnz r2,loop的loop不能放在此后超过255字节的程序空间单元
题中loop:后面跟有MOV @R0,A占1个内部ram单元,INC R0占1个内部ram单元,DJNZ R2占1个内部ram单元(由机器码可得),所以255-3=252=FCH
即机器码为DAFC

···········DONE:

3.对于第三个问题,楼上的方法有误
,R0和R2有可能在00H~A0H
而且你只是把0~10放入50H~5AH单元
所以可以这样
SETB RS1
SETB RS0;R0工作在18H单元
MOV A,#50H
MOV R2,#10
MOV R0,#0
LOOP:
MOV @R0,A
INC A
INC R0
DJNZ R2,LOOP

经仿真无误

1.该程序的功能是将50h~5ah的内容清零。
2.机器码要看书,我不知道,呵呵
3.
MOV R2,#0AH
MOV R0,#50H
CLR A
LOOP:
MOV @R0,A
INC R0
INC A ;将A的值每次加1就可以了
DJNZ R2,LOOP
DONE:


MCS-51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1...
中断服务函数就不用写了吧,就写个初始化函数:void inition(){ TOMD=0x01;\/\/选择定时器0并选择工作方式1 TH0=(65536-50000)\/256;TL0=(65536-500000)%6;EA=1;ET0=1;TR0=1;} 这样初始化就没问题了,另外要实现1S延时,需要在中断函数里加个变量自增,因为我定义的是50ms中断一次,那么...

帮忙做些单片机题目
0. 分析执行指令MOV A,#7FH ADD A,#47H后(A)=( 47H ),OV=(0 )。三.读程序,写出每个程序的结果 1. 已知片内RAM中,(20H)=40H,(40H)=22H,(22H)=10H,P1=0CFH.MOV R0,#20H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P3,P1 执行该程序后,(B)...

单片机的不难编程题!急!!!
呵呵,51单片机指令系统里面,是没有 DEC DPTR 指令的。这样做,好像还可以再简练些。MOV DPTR, #1000H ;个位的地址 MOV A, R0 MOV B, #10 DIV AB XCH A, B MOVX @DPTR, A INC DPTR MOV A, #10 XCH A, B DIV AB XCH A, ...

MCS-51单片机的编程题:已知系统晶振频率为12MHZ,采用定时器T0的方式1...
DELAY1S: MOV TMOD,#01H MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 MOV R2,#20LOOP: JNB TF0,$ CLR TF0 CLR TR0 MOV TH0,#HIGH(65536-50000) MOV TL0,#LOW(65536-50000) SETB TR0 DJNZ R2,LOOP RET ...

单片机应用题,用c或汇编编程都可以。请把程序编写出来!谢谢!_百度知...
单片机的P1口接八个LED,INT0(P3.2)、INT1(P3.3)接开关S1与S2,当开关合上时INT0与INT1即接地。当两个开关都断开时单片机控制P1口所接的八个LED灯一秒钟亮一秒暗地闪烁,当开关S1合上D1~D4LED灯亮另四个暗,当S2合上D5~D8LED灯亮另四个暗(如果S1、S2同时合上S1有优先控制权),foc...

单片机编程题,求解答
1:FADD:MOV R0,#30H MOV R1,#40H MOV R2,#4 CLR C FADD1:MOV A,@R0 ADDC A,@R1 MOV @R0,A INC R0 INC R1 DJNZ R2,FADD1 RET 2:符合条件的控制字为94H INIT:MOV R0,#3BH MOV A,#94H MOVX @R0,A RET

单片机 编程题目
;P3.2输出T1计数脉冲,请将P3.2与P3.5用导线连接。;定时器0定时,中断一次,T1计数器加1。;T1计数器计满10次P0.0取反一次,A计满100次P0全亮 ;ORG 0000H LJMP MAIN ORG 001BH LJMP INT ORG 0030H ;;主程序 ;MAIN:MOV TMOD,#51H ;TIMER0定时,TIMER1计数 MOV TH1,#0FFH ;计数10次...

51单片机编程题,用汇编语言怎么做?
在8051单片机的时钟频率为6MHz,那么定时器的计数脉冲周期就是 2uS;sbit CP=P1^0;void Timer0_init(){ TMOD |=0x01; \/\/T0定时器,方式1,采用16位定时器 TH0 = (65536-500)\/256; \/\/定时器装初值500, 即 1000uS 中断一次 TL0 = (65536-500)%256;EA=1; ET0=1; TR0=1;} ...

单片机不难的编程题!急
循环3次即可。MOV R0, #50H ;被减数地址 MOV R1, #40H ;减数地址 MOV DPTR, #2000H ;差的地址 CLR C MOV R2, #3 ;循环3次 S_LOOP:MOV A, @R0 ;取 SUBB A, @R1 ;减 MOVX, @DPTR,A ;存 INC R0 INC R1 INC ...

单片机编程问题: P1=P1 | 0XF0;\/\/声明高四位输入。 请问这里的 | 是...
| 是 或 运算符 按位或的 0|0=0 0|1=1 1|1=1 或运算就是 只要就有一个为1 结果就为1 与之相对应的是 与 运算 & 与运算只要有一个为0 结果就为0 0&0=0 0&1= 0 1&1=1 P1|0xf0 就是把 P1的高4位都置为1 0xf0 二进制就是 11110000 高4位...

泗县17260845453: 一道单片机的编程题 -
巧功低精: 现假定左边是地址,右边的是内容 1.它的功能是以50H为首地址,个数为0AH个的RAM全部清零 2.机器码 7A 0A··········MOV R2,#0AH mov rn的机器码是01111xxx,其中xxx由Rn的地址来决定,相应地,R0~R7二进制地址为000~...

泗县17260845453: 一道单片机编程题目 -
巧功低精: 不是双字节乘以双字节,不用那么麻烦.不管是几位二进制数,乘以2的话就是整体左移一位 51的汇编CLR C MOV A,31H RLC A MOV 31H,A MOV A,30H RLC A MOV 30H,A可能的进位存在于C中

泗县17260845453: 急求,关于一道单片机的编程题,多谢啦 -
巧功低精: ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV DPTR,#TABLE MOV A,R0 CJNE A,#10,MAIN1 MAIN1: JNC MAIN MOVC A,@A+DPTR MOV B,A SJMP MAIN ORG 1000H TABLE: DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H

泗县17260845453: 单片机编程题 帮忙编写程序 将内ram 两个16位数相加 两个数 分别放在41h40h. 51h50h 将它们分相加 结果放在60 61h中 高位在前 进位放入62 h中 -
巧功低精:[答案] ORG 0030H MOV A,40H MOV B,50H ADD A,B MOV 61H,A MOV A,41H MOV B,51H ADDC A,B MOV 60H,A SJMP $ END

泗县17260845453: 帮我做一道单片机的编程题目! -
巧功低精: ORG 0000H MAIN: MOV A,#XX MOV DPL,A MOV A,P1 MOVX @DPTR,A ACALL DELAY LJMP MAIN

泗县17260845453: 单片机编程题 急!!!高手进,小弟送分!!! -
巧功低精: 1.编程将外部数据存储器2100H单元中的高4位置“1”,其余位清“0” MOV DPTR, #2100H ;设定地址 MOV A, #11110000B ;准备数字 MOVX @DPTR, A ;送到外部数据存储器2100H单元中2.编程将内部数据存储器40H单元的第0位和第7位置“1”,其余位取反.MOV A, 40H ORL A, #10000001B ;或,即是按照“位”相加 XRL A, #01111110B ;用1异或,相当与取反 MOV 40H, A 完

泗县17260845453: 一道关于单片机编程的题 -
巧功低精: 题目有错:table[16],应该有 16 个元素,图中仅写了 10 个.后面还少了分号.1)十位显示2,个位显示5.或者回答:十位显示0x5b,个位显示0x6d.题意,表达的不清.2)红灯23s.流程略.3)图中...

泗县17260845453: 单片机的编程题目 -
巧功低精: 共同研究一下:下面的几种方法(下面采用汇编的形式写,可能这样比C更容易理解一点)1:(移位法) clrr TmpL ;清临时寄存器 clrr TmpH movar TmpL rl TmpL,1 ;不带进位左移(左移两位相当于*4) btrss status,C_FLAG ;C_FLAG 进位标...

泗县17260845453: 求一个单片机的编程题 -
巧功低精: ORG 0000H SJMP MAIN ORG 0040H MAIN:MOV R2,#40H ;R2用作计量正数的地址 MOV R3,#50H ;R3用作计量负数的地址 MOV R0,#30H ;R0用作计量数组的地址 LP4: CJNE @R0,#00H,LP0 ;这十个数中为零的数,不存储,接着判断下一个数 ...

泗县17260845453: 一道单片机题目编程将16位数(高字节放在30H,低字节放在31H)乘10结果仍放在30H和31H, -
巧功低精:MULD:MOV B,#10MOV A,31HMUL ABMOV 31H,AMOV 32H,BMOV B,#10MOV A,30HMUL ABADD A,32HMOV 30H,ARET

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网