zhliao2

风雨兼程,一路向北-------fpga (Keep a quiet heart study)
连载:单片机模板程序(asm)

以下程序择晶振为12MHz

时钟i周期为晶振的倒数,位1/f(晶振),机器周期为时钟周期的12分频,即为12*1/f(晶振),故12MHz的机器周期为1us

定时器1/0

      ORG 0000H           ;复位入口地址
      AJMP START          ;熟记长跳转和短跳转的区别:跳转时有范围的
      LJMP MAIN
      ORG 001BH           ;T1中断服务程序入口地址,若要实现T0中断,则地址改为000BH
      AJMP TIME1             
      ORG 0030H           ;主程序
START:  
      MOV SP, #60H       ;初始化程序
      MOV TMOD, #10H     ;设置T1工作于定时方式1(有16位计数)
      MOV TH1, #3CH      ;设置加1计数器的计数初值高字节    (和TL1一起计数了50ms)要设置定时器0的话则把1改为0,下同
      MOV TL1, #0B0H     ;设置加1计数器的计数初值低字节
      SETB TR1           ;开定时器1
      SETB ET1           ;开定时器1的中断
      SETB EA            ;开总中断
MIAN:
      AJMP MAIN          ;死循环直到计数器溢出
TIME1:
      MOV TL1, #0B0H      ;先赋低8位
      MOV TH1, #3CH


                          ;保护现场 PUSH PSW PUSH ACC
;恢复现场 POP ACC POP PSW 遵循后进先出
RETI ;中断返回 END

外部中断1/0

      ORG 0000H             ;复位入口地址
      AJMP START         
      LJMP MAIN
      ORG 0013H             ;INT1中断服务程序入口地址,若要实现INT0中断,则地址改为0003H
      AJMP INT1             
      ORG 0030H             ;主程序
START:  
                          
      SETB EX1             ;开启外部中断1    (若要设置外部中断0则把1该位0,下同)
      SETB IT1             ;为电平触发方式
      SETB EA              ;开总中断
MIAN:
      AJMP MAIN            ;死循环直到有中断的触发
INT1:

                          ;保护现场 PUSH PSW PUSH ACC
                          ;恢复现场 POP ACC POP PSW    遵循后进先出

      RETI
      END

 

 

posted on 2012-05-04 12:34  zhliao  阅读(704)  评论(0)    收藏  举报