Chinaunix首页 | 论坛 | 博客
  • 博客访问: 519385
  • 博文数量: 398
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 14
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-21 16:02
个人简介

嵌入式屌丝

文章分类

全部博文(398)

文章存档

2013年(398)

我的朋友

分类: 嵌入式

2013-08-21 16:47:23

     学习arm9以来,回头看c51就简单多了。中断就操作几个寄存器打开开关,关闭开关。但主程序和中断程序都要调用相同程序时就要考虑压栈,当然这里不说了。还要注意的是哪些需要手动清除的中断。
   写汇编学汇编:
  ORG 0000H
 AJMP  START
 ORG 0003H
 AJMP INT
 ORG  0030H
START: 
      MOV TCON,#01H
 MOV IP,#01H
 MOV IE,#81H
 MOV R2,#1    ;single  
 MOV R3,#0FEH ;k1
 MOV R0,#250       ;T0
 
STEP00:
      CJNE R2,#1,STEP01 ;第一个if分支(中分支)
LCALL DELAY0
      CJNE R2,#1,STEP01
 MOV P1,R3
LCALL DELAY            ;第二个if小分支(判断)
      CJNE R3,#0FFH,STEP10 ;
 MOV R3,#0FEH
STEP10:
      MOV A,R3
 RL A
 MOV R3,A
STEP01:
      NOP    
      LJMP STEP00
INT: ;中断程序
      MOV A,R2
 CPL A
 MOV R2,A
 CJNE R2,#1,INT00   ;中断第一个if
 MOV A,R0
 SUBB A,#50
 MOV R0,A
INT00:  
 CJNE R0,#50,INT01
 MOV R0,#250


INT01: ;…………r0没有变化……………………
 RETI
DELAY:
 MOV A,R0
 MOV R6,A  
DL1:
      MOV R1,#200
DL2:
   NOP
 NOP
 NOP
 NOP
 NOP
 DJNZ R1,DL2
 DJNZ R6,DL1
 RET
DELAY0:
      MOV R4,#25
DL3:
      MOV R5,#10
DL4:
   NOP
 NOP
 NOP
 NOP
 NOP
 DJNZ R5,DL4
 DJNZ R4,DL3
 RET
 END

 c及汇编:
.zip
阅读(378) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~