![]() |
|
Tài trợ cho PIC Vietnam |
||||||||
| Cảm biến Camera, siêu âm, hồng ngoại, gyro, la bàn... |
|
|
Ðiều Chỉnh | Xếp Bài |
|
|
#16 |
|
Trưởng lão PIC bang
Tham gia ngày: Dec 2005
Bài gửi: 315
: |
Ví dụ đây là một "khung chương trình" của 89C52
Code:
;********************************************************
;* Clock 24 MHz, 1 chu ky 0.5 us
;********************************************************
; Khai bao cac hang so khoi dong ban dau o day
; Khai bao bien o day
;-----------------------------
Start:
mov a,#0Ch
da a
djnz r0,$
clr EA
clr ET0
clr ET1
clr EX0
clr EX1
jmp Clear_RAM
;----------------------------------------------------------------------------
; Clear RAM internal 20h - 0FFh for 89C52
;----------------------------------------------------------------------------
Clear_RAM:
mov r0,#20h
CLR_loop:
mov @r0,#0
inc r0
cjne r0,#0ffh,CLR_loop
mov sp,#Stack
;----------------------------------------------------------------------------
; Setup cac tham so khac o day
;--------------------------------------------------------
; Vong quet chuong trinh chinh
;--------------------------------------------------------
Main:
jbc flg_time.0,prg10us
n100us:
jbc flg_time.1,prg100us
n1ms:
jbc flg_time.2,prg1ms
n10ms:
jbc flg_time.3,prg10ms
n100ms:
jbc flg_time.4,prg100ms
n1sec:
jbc flg_time.5,prg1sec
n1minute:
jmp Main
;~~~~~~~~~~~~~~~~~~~~~~~~~~
prg10us:
;cac lenh cua vong quet 10us
jmp n100us
;~~~~~~~~~~~~~~~~~~~~~~~~~~
prg100us:
;cac lenh cua vong quet 100us
jmp n1ms
;~~~~~~~~~~~~~~~~~~~~~~~~~~
prg1ms:
;cac lenh cua vong quet 1ms
jmp n10ms
;~~~~~~~~~~~~~~~~~~~~~~~~~~
prg10ms:
;cac lenh cua vong quet 10ms
jmp n100ms
;~~~~~~~~~~~~~~~~~~~~~~~~~~
prg100ms:
;cac lenh cua vong quet 100ms
jmp n1sec
;----------------------------------------------------------
; Thu tuc xu ly cac ngat
;----------------------------------------------------------
IntTimer0:
push 0
clr TR0 ; cam timer 0
;cac lenh trong ngat Timer0
endtimer0:
setb TR0 ; Cho phep timer 0
pop 0
reti
;----------------------------
;Tao chu ky vong quet khac nhau
IntTimer1:
push 0
clr TR1 ; cam timer 1
setb flg_time.0 ;bit 0 : da thay doi 10us
mov r0,#cn_10us
inc @r0
cjne @r0,#10,endtimer1
setb flg_time.1 ;bit 1: da thay doi 100us
mov @r0,#0
mov r0,#cn_100us
inc @r0
cjne @r0,#10,endtimer1
setb flg_time.2 ;bit 2: da thay doi 1ms=1000us
mov @r0,#0
mov r0,#cn_1ms
inc @r0
cjne @r0,#10,endtimer1
setb flg_time.3 ;bit 3: da thay doi 10ms
mov @r0,#0
mov r0,#cn_10ms
inc @r0
cjne @r0,#10,endtimer1
setb flg_time.4 ;bit 4: da thay doi 100ms
mov @r0,#0
mov r0,#cn_100ms
inc @r0
cjne @r0,#10,endtimer1
setb flg_time.5 ;bit 5: da thay doi 1sec=1000ms
mov @r0,#0
mov r0,#cn_1sec
inc @r0
cjne @r0,#60,endtimer1
setb flg_time.6 ;bit 6: da thay doi 1minute=60s
mov @r0,#0
mov r0,#cn_1minute
inc @r0
cjne @r0,#60,endtimer1
setb flg_time.7 ;bit 7: da thay doi 1hour=60minutes
mov @r0,#0
mov r0,#cn_1hour
inc @r0
endtimer1:
mov TL1,#Low(MotorPulse)
mov TH1,#High(MotorPulse)
setb TR1
pop 0
reti
;----------------------------
IntEx0:
reti
;----------------------------
IntRS232:
reti
;----------------------------
IntEx1:
reti
;----------------------------
endprog: db ' End of program at here, bye!'
END
__________________
Sống là động nhưng lòng luôn bất động, Sống là thương nhưng lòng chẳng vấn vương, Sống yên vui danh lợi vẫn coi thường, Tâm bất biến giữa dòng đời vạn biến. Chú ý: đề nghị các thành viên đọc luồng dưới đây trước khi post bài: http://www.picvietnam.com/forum//showthread.php?t=1263 |
|
|
|
| Ðiều Chỉnh | |
| Xếp Bài | |
|
|