微机原理

本文详细介绍了51单片机的编程实践,包括中断程序设置、数据传送、求绝对值、内存统计、内存数据运算、延时程序、流水灯控制及中断计数等核心功能实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

MOV AL 'E'

MOV BX,OFFSET TABLE


07FFH+1-0300H = 500H
500H = 1280B


4KB = 4096 = 1000H

00300H+1000H-1 = 12FFH


共阴显示   =  -共阳显示


外部中断程序
外部中断0采用下降沿的中断触发方式 
ORG 0000H
LJMP ST
ORG 0030H
LJMP FT
ORG 0100H
ST:STEB EX0
  SETB IT0
  SETB EA
  SJMP $
FT:CPL P1.0
  RETI
END


简单数据传送
将RAM从30H开始的连续32个单元的内容传递给片内RAM从60H 开始的连续32个单元。
ORG 1000H
   MOV R7,#20H
MOV R0,#30H
MOV R1,#60H
LOOP:MOV A,@R0
  MOV @R1,A
  INC RO
  INC R1 
  DJNZ R7,LOOP
  SJMP$
  END

求绝对值
试使用51单片机汇编从30H单元开始,连续存放30个带符号数, 求出各个数的绝对值,将结果存入原单元。
START:MOV  R7,#1EH
       MOV  R0,#30H               
LOOP:   MOV A,@R0               
JNB  ACC.7,NEXT                    
CPL  A                            
INC  A                             
MOV  @R0,A                        
NEXT:  INC  R0                     
DJNZ  R7,LOOP                     
SJMP  $
X  DATA  30H                      
END


内存统计
试使用51单片机汇编实现从内部RAM的30H单元开始存放一组用 补码表示的带符号数,其数目已存放在20H单元。编写程序统计 出其中的正数、0和负数的数目,并将结果分别存入21H、22H、 23H单元
MOV R0,#30H
MOV 21H,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV A,@R0
JZ NEXT1
JNB ACC.7,NEXT2
INC 23H
SJMP NEXT3
NEXT2:INC 21H
SJMP NEXT3
NEXT1:INC 22H
NEXT3:INC R0
DJNZ 20H,LOOP
SJMP $

内存数据运算
编程序将片内30H-37H单元内容的高4位清零,保持低4位不变
ORG    1000H        
  MOV    R7,#08H 
MOV    R0,#30H            
LOOP:MOV    A,@R0      
ANL    A,#0FH                  
MOV    @R0,A      
INC        R0             
DJNZ    R7,LOOP                  
SJMP    $ 
END


延时程序
DELAY: MOV    R1,#50
DL1: 
MOV R2,#100 
DL2: 
DJNZ   R2,DL2 
DJNZ   R1,DL1 
SJMP    $ 
END


流水灯
      ORG 0000H
      LJMP START
      ORG 0030H
START:MOV RO,#8
      MOV A,#0FEH
LOOP: MOV P1,A
      LCALL DELAY
      RL A
      DJNZ R0,LOOP
      LJMP START
DELAY:MOV R5,#2
L1:   MOV R6,#0
L2:   MOV R7,#0
      DJNZ R7,$
      DJNZ R6,L2
      DJNZ R5,L1
      RET
      END  


中断计数
ORG 0000H
  LJMP MAIN
ORG 0003H
  LJMP INT
ORG 0030H
  MAIN:
  MOV P2,#00H
  MOV A,#00H
  SETB EA
  SETB EX0
  MOV TCON,#01H
  JMP $
   INT:
   CJNE A,#09H,L1
   MOV A,#00H
   AJMP L2
   L1:
   INC A
   AJMP L2
   L2:
   MOV P2,A
   RET 1
  END 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值