×
单片机 > 单片机程序设计 > 详情

51单片机汇编语言(二)

发布时间:2020-09-03 发布时间:
|
6.6功能说明:单片机P1端口接8只LED,每次点亮两只,先从右边向左边移动点亮;再从左边向右边移动点亮,然后闪烁两次,重复循环。

 

 

程序:JS06.ASM

01:  START:   MOV   R0, #7              ;设左移7次

02:           MOV   A,#0FCH            ;存入开始亮灯位置

03:  LOOP:    MOV       P1, A           ;传送到P1并输出  

04:            ACALL     DELAY         ;调延时子程序

05:             RL                       ;左移一位

06:             DJNZ       R0, LOOP       ;判断移动次数     

07:             MOV       R1, #7           ;设右移7次

08:   LOOP1:   RR                       ;右移一位         

09:             MOV       P1, A            ;传送到P1并输出

10:             ACALL     DELAY          ;调延时子程序

11:             DJNZ       R1, LOOP1       ;判断移动次数     

12:             MOV       R2, #3           ;设置闪烁次数

13:             MOV       A, #00H          ;设初始值

14:   LOOP2:   MOV       P1, A            ;P1端口灯亮

15:             ACALL     DELAY          ;调用延时子程序

16:             CPL                      ;A取反值

17:             DJNZ       R2, LOOP2       ;判断闪烁次数     

18:             JMP        START          ;重新设定显示值           

19:   DELAY:   MOV       R5, #25    

20:   DLY1:     MOV       R6, #100   

21:   DLY2:     MOV       R7, #100   

22:             DJNZ       R7, $                              

23:             DJNZ       R6, DLY2   

 24:             DJNZ       R5, DLY1   

25:             RET                        ;子程序返回       

26:             END                        ;程序结束                        

 

 

6.7功能说明

单片机端口接八只LED,编程时利用取表的方法,使端口P1做单一灯的变化:先向左移2次,然后向右移2次,再闪烁4次,不断循环。

程序:JS07.ASM

01:     START:  MOV  DPTR, #TABLE   ;存表

02:     LOOP:   CLR              ;A清零                                   

03:             MOVC  A, @A+DPTR    ;取表代码

04:             CJNE  A, #01H, LOOP1;不是01H,循环

05:             JMP   START         ;重新设定

06:     LOOP1:  MOV   P1, A         ;送P1输出

07:             ACALL DELAY         ;调延时程序

08:             INC   DPTR          ;数据指针加1

09:             JMP   LOOP          ;转移到LOOP处   

10:     DELAY:  MOV  R5,#25         ;延时0.5秒  

11:     DLY1:   MOV  R6,#100       

12:     DLY2:   MOV  R7,#100       

13:             DJNZ R7,$           ;                         

14:             DJNZ R6,DLY2       

15:             DJNZ R5,DLY1       

16:             RET                 ;    

17:     TABLE:  DB   0FEH,0FDH,0FBH,0F7H 

18:             DB   0EFH,0DFH,0BFH,7FH   ;    左移

19:             DB   0FEH,0FDH,0FBH,0F7H 

20:             DB   0EFH,0DFH,0BFH,7FH   ;    左移

21:             DB   7FH,0BFH,0DFH,0EFH  

22:             DB   0F7H,0FBH,0FDH,0FEH  ;    右移

23:             DB   7FH,0BFH,0DFH,0EFH  

24:             DB   0F7H,0FBH,0FDH,0FEH  ;    右移 

25:             DB   00H,0FFH,00H,0FFH   

26:             DB   00H,0FFH,00H,0FFH    ;    闪烁

27:             DB   01H                  ;    结束码   

28:             END                       ;          

 

LED显示

7.1功能说明

让一位数码管静态显示数字“6”。

程序:SMG1.ASM

01:    START:  MOV   DPTR, #TABLE  ;  存入表的起始地址

02:              MOV   A, #6           将欲显示的数字6存入A

03:              MOVC  A, @A+DPTR   ;  按地址取代码并存入A

04:              MOV   P0, A            将代码送P0转变数字显示

05:              JMP                   程序运行在当前状态

06:    TABLE:  DB  0C0H, 0F9H, 0A4H, 0B0H;    

07:              DB  99H,  92H,  82H,  0F8H; 

08:              DB  80H,  90H,  88H,  83H;  

09:              DB  0C6H, 0A1H, 86H,  8EH;             代码表

10:              END                      ;             程序结束



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
浅谈msp430f5529入门(2)----时钟配置.例程分析