⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flp.asm

📁 Library for the 8051 microcontroller. such as math routine, hexBCD, LCD, Keyboard, I2C, Remote, Ke
💻 ASM
字号:

;------------------------------------------------------------------------------------
; Program square wafe osilator dengan memanfaatkan prosedur interrupt timer.
; Output berupa gelombang kotak (flip-flop Port2.0 dan Port2.1)
; Frequency 50 hz pada operasi X-tall 12Mhz
; by: Herlambang Aribowo J0D005037 D3 Instrumentasi dan Elektronika UNDIP
;------------------------------------------------------------------------------------
isine equ  -5000
cntx  equ  20h
cnty  equ  21h
Q     bit  p2.0
Qinv  bit  p2.1
              Org          00h        ; iki routine pengorganisasian memori usage               
              sjmp         mulai      ; 00h buat operasi routine normal                         
              Org          0bh        ; 0bh adalah memory alocation buat interrupt timer0             
              Ljmp         nginterupt ; iki alamat routin interrupt
              Org          1bh        ; 1bh adalah alamat alocation buat interrupt timer1
              Ljmp         nginterupt2; alamat routine interrupt timer1
mulai:        clr          Q
              clr          Qinv
              mov          cntx,#02h  ; counter timer0 biar 25hz
              mov          cnty,#02h  ; counter timer1 biar 25hz
InitTimer:    mov          TMOD,#11h       ; setting timer mode
              mov          tl0,#0ffh        ; ngisi tl dan th timer 0 dengan ffh
              mov          th0,#0ffh        ; 
              setb         tf0             ; kondisikan overflow
              setb         ET0             ; aktifkan layanan interrupt timer0         
              mov          tl1,#low (isine)
              mov          th1,#high (isine)        ; 
              setb         tf1             ; kondisikan overflow
              setb         ET1             ; aktifkan layanan interrupt timer0
              setb         EA              ; aktifkan master layanan interrupt
              setb         TR0             ; layanan interrupt timer0 dijalankan
              ljmp         looping

;------------------------------------------------------------------------------------------------
; Procedure Flip-flop dengan layanan interupt T0 dan T1
;------------------------------------------------------------------------------------------------

nginterupt:   mov          tl0,#low (isine)
              mov          th0,#high (isine)     
              djnz         Cntx,rampungx   ; uwis 20ms po durung?
              clr          tf0             ; bersihkan flag timer 0 overflow
              clr          tr0             ; mateni timer internal
              acall        pulsax          ; pulsax
              mov          Cntx,#2         ; tiap overflow dikali2 ben 10ms dab       
              acall        resetx          ; reset boss..       
rampungx:     reti                         ; 

resetx:      
              mov          tl0,#low (isine)
              mov          th0,#high (isine)
              setb         tr1        ; nyumet timer1
              ret                     ; balek maning
 
pulsax:       clr          Q          ; pulsa low
              cpl          Qinv       ; pulsa high
              ret


nginterupt2:  mov          tl1,#low (isine)
              mov          th1,#high (isine)
              djnz         Cnty,rampungy   ; uwis 20ms po durung?
              clr          tf1             ; bersihkan flag timer 0 overflow
              clr          tr1             ; mateni timer internal
              acall        pulsay          ; pulsa inverse pulsax
              mov          Cnty,#2         ; tiap overflow dikali2 ben 10ms dab       
              acall        resety          ; reset boss..     
rampungy:     reti                         ; 

resety:      
              mov          tl1,#low (isine)
              mov          th1,#high (isine)
              setb         tr0        ; nyumet timer1
              ret                     ; balek maning

pulsay:       cpl          Q          ; pulsa high
              cpl          Qinv       ; pulsa low    
              ret

;------------------------------------------------------------------------------------------------
; Routine utama buat bekerja mencari nafkah hehehehe :)
;------------------------------------------------------------------------------------------------

looping:     
              sjmp         looping

              end

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -