• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

这些你会多少?会一半证明单片机基本入门

1、从外部RAM20H单元开始,有30个带符号数,试编一个程序,把其中正数、负数分别送到片内RAM的51H和71H开始的存储单元,并分别记下其中正数和负数的个数送到片内RAMD的50H和70H单元。(画出程序流程图亦可得5分)

2、根据流程图编程,将片内RAM40H~4FH单元的内容传送至片外RAM3000H~300FH对应的单元中。

全部回复(37)
正序查看
倒序查看
backin
LV.4
2
2014-02-26 21:44

3、试编制一个循环闪烁灯程序。有8个发光二极管,其中一个闪烁点亮8次后转移到下一个闪烁8次,循环不止。(设8个发光二极管接在P1口)

4、试编写一个延时80ms的延时子程序(已知晶振频率12MHz)。(10分)

5试编写程序:用单片机控制P1口外部连接的8个LED按下列要求动作:先点亮P1.0至P1.3四个LED,同时P1.4至P1.7熄灭;然后点亮P1.4至P1.7四个LED, 同时P1.0至P1.3熄灭。最后循环前面两种状态。(假设高电平点亮)(14分)

6、编制一个循环闪烁灯程序。有8个发光二极管,依次点亮8个发光二极管,每次点亮的时间保持一段时间。(设8个发光二极管接在P1口)(10分)

7、P3.2和P3.3两个引脚控制P1口的LED,当P3.2接低电平时,8个LED全点亮,当P3.3接低电平的时候,8个LED全部熄灭。(10分)

8、设MCS-51单片机系统晶振频率为12MHz,请采用中断方式编出利用定时/计数器T0在P2.0引脚上产生周期为1s的方波信号的程序。(提示:15536=3CB0H)(11分)

9、将外部RAM的100H单元中内容送入外部RAM的200H单元中。(8分)10、设1067H存在于R1R0中,30A0H存在于R3R2中,计算R1R0+R3R2,结果存于R5R4中。(14分)

0
回复
backin
LV.4
3
2014-02-26 21:44
@backin
3、试编制一个循环闪烁灯程序。有8个发光二极管,其中一个闪烁点亮8次后转移到下一个闪烁8次,循环不止。(设8个发光二极管接在P1口)4、试编写一个延时80ms的延时子程序(已知晶振频率12MHz)。(10分)5试编写程序:用单片机控制P1口外部连接的8个LED按下列要求动作:先点亮P1.0至P1.3四个LED,同时P1.4至P1.7熄灭;然后点亮P1.4至P1.7四个LED,同时P1.0至P1.3熄灭。最后循环前面两种状态。(假设高电平点亮)(14分)6、编制一个循环闪烁灯程序。有8个发光二极管,依次点亮8个发光二极管,每次点亮的时间保持一段时间。(设8个发光二极管接在P1口)(10分)7、P3.2和P3.3两个引脚控制P1口的LED,当P3.2接低电平时,8个LED全点亮,当P3.3接低电平的时候,8个LED全部熄灭。(10分)8、设MCS-51单片机系统晶振频率为12MHz,请采用中断方式编出利用定时/计数器T0在P2.0引脚上产生周期为1s的方波信号的程序。(提示:15536=3CB0H)(11分)9、将外部RAM的100H单元中内容送入外部RAM的200H单元中。(8分)10、设1067H存在于R1R0中,30A0H存在于R3R2中,计算R1R0+R3R2,结果存于R5R4中。(14分)

11、编写一个跑马灯的程序,P0口接8个发光二极管的的阴极(18分)。1

2、设置IP寄存器的初始值,使得MCS-51的片内中断为低优先级,片外中断为高优先级。(8分)

13、设有16位二进制数存放在内部RAM的50H及51H单元中,要求将其算术左移一位(即原数各位均向左移1位,最低位移入0)后仍存放在原单元。试编制相应的程序。(14分)

14、P3.2和P3.3口各接有一只按键,要求它们分别按下时(P3.2=0或P3.3=0),分别使P1口为0或FFH(18分)15、若允许片内2个定时/计数器中断,禁止其它中断源的中断请求,试编写出设置IE的相应程序。(8分)

16、将A累加器的低四位取反四次、高四位不变。每变换一次,从P1输出(14分)。

17、设8031单片机使用12MHz晶振(机器周期T为lµs),试设计延迟100ms的延时程序。(18分)

0
回复
close3
LV.5
4
2014-02-26 21:45
@backin
11、编写一个跑马灯的程序,P0口接8个发光二极管的的阴极(18分)。12、设置IP寄存器的初始值,使得MCS-51的片内中断为低优先级,片外中断为高优先级。(8分)13、设有16位二进制数存放在内部RAM的50H及51H单元中,要求将其算术左移一位(即原数各位均向左移1位,最低位移入0)后仍存放在原单元。试编制相应的程序。(14分)14、P3.2和P3.3口各接有一只按键,要求它们分别按下时(P3.2=0或P3.3=0),分别使P1口为0或FFH(18分)15、若允许片内2个定时/计数器中断,禁止其它中断源的中断请求,试编写出设置IE的相应程序。(8分)16、将A累加器的低四位取反四次、高四位不变。每变换一次,从P1输出(14分)。17、设8031单片机使用12MHz晶振(机器周期T为lµs),试设计延迟100ms的延时程序。(18分)
easy
0
回复
backin
LV.4
5
2014-02-26 21:48
@close3
easy
设MCS-51单片机系统晶振频率为12MHz,请采用中断方式编出利用定时/计数器T0在P2.0引脚上产生周期为1s的方波信号的程序。(提示:15536=3CB0H)
0
回复
vidas
LV.2
6
2014-02-26 21:48
@close3
easy
我还差的远
0
回复
cloud7890
LV.2
7
2014-02-26 21:49
@vidas
我还差的远
除了汇编部分不会
0
回复
2014-02-26 21:50
@cloud7890
除了汇编部分不会
没学过汇编,别的简单
0
回复
pirate
LV.4
9
2014-02-26 21:51
咋还有8031的
0
回复
heal
LV.3
10
2014-02-26 21:52
@pirate
咋还有8031的
16题MOV R0,#0 ;计数初值送0LL:XRL A,#0FH ;高4位不变,低四位取反INC R0 ;次数加1MOV P1,A ;从P1输出CJNE R0,#04,LL ;不满四次循环RET
0
回复
backin
LV.4
11
2014-02-26 21:53
@heal
16题MOVR0,#0;计数初值送0LL:XRLA,#0FH;高4位不变,低四位取反INCR0;次数加1MOVP1,A;从P1输出CJNER0,#04,LL;不满四次循环RET
你已经入门了
0
回复
matou
LV.3
12
2014-02-26 21:53
@backin
你已经入门了
学习一下
0
回复
elio
LV.2
13
2014-02-26 21:54
@matou
学习一下
我也想到一个,借用一下层主的几句 MOV R0,4 ;计数初值送4 LL:XRL A,#0FH ;高4位不变,低四位取反 MOV P1,A ;从P1输出 DJNZ R0,LL ;不满四次循环 RET 看看对么?
0
回复
vidas
LV.2
14
2014-02-26 21:55
@elio
我也想到一个,借用一下层主的几句MOVR0,4;计数初值送4LL:XRLA,#0FH;高4位不变,低四位取反MOVP1,A;从P1输出DJNZR0,LL;不满四次循环RET看看对么?
汇编不懂怎么破
0
回复
vidas
LV.2
15
2014-02-26 21:56
@vidas
汇编不懂怎么破
只学过c的
0
回复
elio
LV.2
16
2014-02-26 21:58
@elio
我也想到一个,借用一下层主的几句MOVR0,4;计数初值送4LL:XRLA,#0FH;高4位不变,低四位取反MOVP1,A;从P1输出DJNZR0,LL;不满四次循环RET看看对么?

我上面那个回复没排好行...MOV R0,4 ;计数初值送4

LL:XRL A,#0FH ;高4位不变,低四位取反

MOV P1,A ;从P1输出

 DJNZ R0,LL ;不满四次循环

 RET

0
回复
backin
LV.4
17
2014-02-26 21:58
@elio
我上面那个回复没排好行...MOVR0,4;计数初值送4LL:XRLA,#0FH;高4位不变,低四位取反MOVP1,A;从P1输出 DJNZR0,LL;不满四次循环 RET
不错 支持下 继续 ,第1题 是 最 难的
0
回复
backin
LV.4
18
2014-02-26 21:59

  1、从外部RAM20H单元开始,有30个带符号数,试编一个程序,把其中正数、负数分别送到片内RAM的51H和71H开始的存储单元,并分别记下其中正数和负数的个数送到片内RAMD的50H和70H单元。

  程序如下:

  ZHENG DATA 50H

  FU DATA 70H

  ORG 0000H

  LJMP MAIN

  ORG 0050H

  MAIN:MOV ZHENG,#00H ;计数初始为零

  MOV FU,#00H ;计数初始为零

  MOV R7,#30 ;30个数

  MOV R0,#1FH ;第一个数的前一个地址

  MOV R1,#51H ;整数存的首地址

  MOV SP,#70H ;负数的首地址

  LOOP:INC R0 ;指向第一个数

  MOV A,@R0 ;给a

  MOV C,ACC.7 ;符号位给c

  JC NEXT ;势负数则next

  MOV @R1,A

  INC R1 ;正数就保存在正的

  INC ZHENG ;计数加一

  NEXT:PUSH FU ;负数存

  INC FU ;计数加一

  DJNZ R7,LOOP ;未到30就继续判断

  END ;结束

0
回复
elio
LV.2
19
2014-02-26 22:00
@backin
  1、从外部RAM20H单元开始,有30个带符号数,试编一个程序,把其中正数、负数分别送到片内RAM的51H和71H开始的存储单元,并分别记下其中正数和负数的个数送到片内RAMD的50H和70H单元。  程序如下:  ZHENGDATA50H  FUDATA70H  ORG0000H  LJMPMAIN  ORG0050H  MAIN:MOVZHENG,#00H;计数初始为零  MOVFU,#00H;计数初始为零  MOVR7,#30;30个数  MOVR0,#1FH;第一个数的前一个地址  MOVR1,#51H;整数存的首地址  MOVSP,#70H;负数的首地址  LOOP:INCR0;指向第一个数  MOVA,@R0;给a  MOVC,ACC.7;符号位给c  JCNEXT;势负数则next  MOV@R1,A  INCR1;正数就保存在正的  INCZHENG;计数加一  NEXT:PUSHFU;负数存  INCFU;计数加一  DJNZR7,LOOP;未到30就继续判断  END;结束

第一题

  第一题:

  MOV R0 , #51H

  MOV R1 , #71H

  MOV R5 , #0 ;正数的个数

  MOV R6 , #0 ;负数的个数

  MOV R7 , 30 ;循环的次数

  MOV DPTR , #20H ;取片外20H的内容

  MOV A , @DPTR

  LOOP : JB ACC.7 , LOOP1 ;判断正负号,负数跳转LOOP1

  MOV @R0 , A

  INC R0

  INC R5 ;正数个数加1

  AJMP LOOP2

  LOOP1 : MOV @R1 , A

  INC R1

  INC R6 ;负数个数加1

  LOOP2 : INC DPTR

  DJNZ R7 , LOOP ;判断循环次数

  MOV 50H , R5

  MOV 70H , R6

  END

  不知道有错没

 

0
回复
backin
LV.4
20
2014-02-26 22:01
@elio
第一题  第一题:  MOVR0,#51H  MOVR1,#71H  MOVR5,#0;正数的个数  MOVR6,#0;负数的个数  MOVR7,30;循环的次数  MOVDPTR,#20H;取片外20H的内容  MOVA,@DPTR  LOOP:JBACC.7,LOOP1;判断正负号,负数跳转LOOP1  MOV@R0,A  INCR0  INCR5;正数个数加1  AJMPLOOP2  LOOP1:MOV@R1,A  INCR1  INCR6;负数个数加1  LOOP2:INCDPTR  DJNZR7,LOOP;判断循环次数  MOV50H,R5  MOV70H,R6  END  不知道有错没 
自己写的不够简洁 好假 啊
0
回复
elio
LV.2
21
2014-02-26 22:01
@backin
自己写的不够简洁好假啊
真的,我寄存器R0,R1那些就用了5个...我开始学单片机,学了一点点汇编楼主给点建议我应该学什么,51?PIC?
0
回复
backin
LV.4
22
2014-02-26 22:02
@elio
真的,我寄存器R0,R1那些就用了5个...我开始学单片机,学了一点点汇编楼主给点建议我应该学什么,51?PIC?
将 MOV 50H , R5 MOV 70H , R6 改为 ZHENG DATA 50H FU DATA 70H ,以便以后的修改
0
回复
backin
LV.4
23
2014-02-26 22:02
@elio
真的,我寄存器R0,R1那些就用了5个...我开始学单片机,学了一点点汇编楼主给点建议我应该学什么,51?PIC?
学 51 C语言
0
回复
elio
LV.2
24
2014-02-26 22:02
@backin
将MOV50H,R5MOV70H,R6改为ZHENGDATA50HFUDATA70H,以便以后的修改
对,有时我就是这样,做事就是用最先想到的方法,往往会不怎么好使,像你考虑的就全面了。那你建议是买单片机学还是自己做个还是用proteus就好了?
0
回复
backin
LV.4
25
2014-02-26 22:03
@backin
学51C语言
买单片机 淘宝大概40-50 , proteus 仿真 和实际 差别 太大了 ,想学好单片机必须 要 硬件
0
回复
vidas
LV.2
26
2014-02-26 22:05

  2.

  ORG 0000H

  MOV R0,#40H

  MOV DPTR #3000H

  LP: MOV A, @R0

  MOV DPTR , @A

  MOV R2,#10H

  INC R0

  INC DPTR

  DJNZ R2,LP

  END

  自己瞎写的,不知道对不对,有错误勿喷呀

0
回复
backin
LV.4
27
2014-02-26 22:06
@vidas
  2.  ORG0000H  MOVR0,#40H  MOVDPTR#3000H  LP:MOVA,@R0  MOVDPTR,@A  MOVR2,#10H  INCR0  INCDPTR  DJNZR2,LP  END  自己瞎写的,不知道对不对,有错误勿喷呀

RG 0000HAJMP MAINORG 0030HMAIN: MOV R0,#40H MOV DPTR #3000H MOV R2,#10 P: MOV A, @R0 MOV @DPTR ,A INC R0 INC DPTR DJNZ R2,P RET END

0
回复
vidas
LV.2
28
2014-02-26 22:06
@backin
RG0000HAJMPMAINORG0030HMAIN:MOVR0,#40HMOVDPTR#3000HMOVR2,#10P:MOVA,@R0MOV@DPTR,AINCR0INCDPTRDJNZR2,PRETEND
受教了,谢谢
0
回复
backin
LV.4
29
2014-02-26 22:08

RG 0000HAJMP MAINORG 0030HMAIN: MOV R0,#40H MOV DPTR #3000H MOV R2,#10 P: MOV A, @R0 MOV @DPTR ,A INC R0 INC DPTR DJNZ R2,P RET END2、根据流程图编程,将片内RAM40H~4FH单元的内容传送至片外RAM3000H~300FH对应的单元中。

程序如下:

ORG 0000H

AJMP MAIN

ORG 0030H

MAIN:

MOV R0,#40H

MOV DPTR #3000H

MOV R2,#10

P: MOV A, @R0

MOV @DPTR ,A

INC R0

INC DPTR

DJNZ R2,P

RET

END

0
回复
cloud7890
LV.2
30
2014-02-26 22:09
@backin
RG0000HAJMPMAINORG0030HMAIN:MOVR0,#40HMOVDPTR#3000HMOVR2,#10P:MOVA,@R0MOV@DPTR,AINCR0INCDPTRDJNZR2,PRETEND2、根据流程图编程,将片内RAM40H~4FH单元的内容传送至片外RAM3000H~300FH对应的单元中。[图片]程序如下:ORG0000HAJMPMAINORG0030HMAIN:MOVR0,#40HMOVDPTR#3000HMOVR2,#10P:MOVA,@R0MOV@DPTR,AINCR0INCDPTRDJNZR2,PRETEND
已收藏
0
回复
一木01
LV.3
31
2014-02-26 22:10
@cloud7890
已收藏
都懒得贴程序了 都写了3年汇编了
0
回复