Mình vừa viết chương trình cho led sáng theo 2 kiểu ở P1.(mới tập tọe thôi,nghĩ sao viết vậy nên khá dài) . Vấn đề là khi ráp thực tế ko thể điều chỉnh lại tốc độ chớp theo ý mình được. Mỗi lần cần nhanh hay chậm hơn chẵng lẽ nạp lại VXL? Cho nên mình muốn ráp thêm mạch 555 để lấy sự thay đổi xung làm hàm delay. Kiến thức có tý tẹo nên xin trình bày ý tưởng thôi, mong các bạn giúp mình hướng giải quyết nhé .
Ý mình là cho 1 chân nào đó của 89 nhận xung từ 555. Hàm delay sẽ nhận biết độ dài ngắn của xung > từ đó Delay sẽ thay đổi độ trễ theo xung. không phụ thuộc vào tần số, chu kỳ của 89
Như vậy, xung nên đưa vào chân nào thích hợp nhất ? Hàm delay coi như 1 chương trình con tốn 1 khoảng trễ để xử lý xung đó : có lệnh nào làm được ko ? Nếu không phiền xin các bạn sửa lại chương trinh giúp mình theo ý tưởng trên nha.
Rất cám ơn các bạn quan tâm !!
#include <sfr51.inc>
org 0000h
main:
mov p1,#0ffh
lcall kieu1 ;chop tat xen ke (chan-le)
lcall kieu2 ;them vao thu duoi don
lcall lapkieu2 ;vong lap 4 lan cua kieu 2
sjmp main
;--------------
lapkieu2:
mov r7,#3
trolai2:
lcall kieu2
djnz r7,trolai2
ret
;-------------
kieu1: mov r7,#8
trolai1: mov a,#55h
mov p1,a
lcall delay2
mov a,#0aah
mov p1,a
lcall delay2
djnz r7,trolai1
ret
kieu2:
;-------chu ky 1---
mov a,#10000000b
mov p1,a
lcall delay
mov a,#01000000B
mov p1,a
lcall delay
mov a,#00100000b
mov p1,a
lcall delay
mov a,#00010000b
mov p1,a
lcall delay
mov a,#00001000b
mov p1,a
lcall delay
mov a,#00000100b
mov p1,a
lcall delay
mov a,#00000010b
mov p1,a
lcall delay
mov a,#00000001b
mov p1,a
lcall delay
;-----------------chu ky 2------
mov a,#10000001b
mov p1,a
lcall delay
mov a,#01000001B
mov p1,a
lcall delay
mov a,#00100001b
mov p1,a
lcall delay
mov a,#00010001b
mov p1,a
lcall delay
mov a,#00001001b
mov p1,a
lcall delay
mov a,#00000101b
mov p1,a
lcall delay
mov a,#00000011b
mov p1,a
lcall delay
;--------------chu ky 3---------
mov a,#10000011b
mov p1,a
lcall delay
mov a,#01000011B
mov p1,a
lcall delay
mov a,#00100011b
mov p1,a
lcall delay
mov a,#00010011b
mov p1,a
lcall delay
mov a,#00001011b
mov p1,a
lcall delay
mov a,#00000111b
mov p1,a
lcall delay
;----------chu ky 4----------
mov a,#10000111b
mov p1,a
lcall delay
mov a,#01000111B
mov p1,a
lcall delay
mov a,#00100111b
mov p1,a
lcall delay
mov a,#00010111b
mov p1,a
lcall delay
mov a,#00001111b
mov p1,a
lcall delay
;-------------chu ky 5--------
mov a,#10001111b
mov p1,a
lcall delay
mov a,#01001111B
mov p1,a
lcall delay
mov a,#00101111b
mov p1,a
lcall delay
mov a,#00011111b
mov p1,a
lcall delay
;--------chu ky 6------------
mov a,#10011111b
mov p1,a
lcall delay
mov a,#01011111B
mov p1,a
lcall delay
mov a,#00111111b
mov p1,a
lcall delay
;----chu ky 7----------
mov a,#10111111b
mov p1,a
lcall delay
mov a,#01111111B
mov p1,a
lcall delay
;------chu ky 8---------
mov a,#11111111b
mov p1,a
lcall delay
;chop 4 cai > sang = 3 lan delay--
mov a,#00000000b
mov p1,a
lcall delay
mov a,#11111111b
mov p1,a
lcall delay
mov a,#00000000b
mov p1,a
lcall delay
mov a,#11111111b
mov p1,a
lcall delay
lcall delay
lcall delay
;----------------
delay:
mov r2,#200
LLDL: mov r1,#200
LLA: nop
djnz r1,LLA
djnz r2,LLDL
ret
;-------------------
delay2:
mov r2,#250
LLDL2: mov r1,#250
LLB: NOP
nop
djnz r1,LLB
djnz r2,LLDL2
ret
end
Sorry Mod !! ko biết làm sao chèn code riêng cho nó gọn Thread ???
Ý mình là cho 1 chân nào đó của 89 nhận xung từ 555. Hàm delay sẽ nhận biết độ dài ngắn của xung > từ đó Delay sẽ thay đổi độ trễ theo xung. không phụ thuộc vào tần số, chu kỳ của 89
Như vậy, xung nên đưa vào chân nào thích hợp nhất ? Hàm delay coi như 1 chương trình con tốn 1 khoảng trễ để xử lý xung đó : có lệnh nào làm được ko ? Nếu không phiền xin các bạn sửa lại chương trinh giúp mình theo ý tưởng trên nha.
Rất cám ơn các bạn quan tâm !!
#include <sfr51.inc>
org 0000h
main:
mov p1,#0ffh
lcall kieu1 ;chop tat xen ke (chan-le)
lcall kieu2 ;them vao thu duoi don
lcall lapkieu2 ;vong lap 4 lan cua kieu 2
sjmp main
;--------------
lapkieu2:
mov r7,#3
trolai2:
lcall kieu2
djnz r7,trolai2
ret
;-------------
kieu1: mov r7,#8
trolai1: mov a,#55h
mov p1,a
lcall delay2
mov a,#0aah
mov p1,a
lcall delay2
djnz r7,trolai1
ret
kieu2:
;-------chu ky 1---
mov a,#10000000b
mov p1,a
lcall delay
mov a,#01000000B
mov p1,a
lcall delay
mov a,#00100000b
mov p1,a
lcall delay
mov a,#00010000b
mov p1,a
lcall delay
mov a,#00001000b
mov p1,a
lcall delay
mov a,#00000100b
mov p1,a
lcall delay
mov a,#00000010b
mov p1,a
lcall delay
mov a,#00000001b
mov p1,a
lcall delay
;-----------------chu ky 2------
mov a,#10000001b
mov p1,a
lcall delay
mov a,#01000001B
mov p1,a
lcall delay
mov a,#00100001b
mov p1,a
lcall delay
mov a,#00010001b
mov p1,a
lcall delay
mov a,#00001001b
mov p1,a
lcall delay
mov a,#00000101b
mov p1,a
lcall delay
mov a,#00000011b
mov p1,a
lcall delay
;--------------chu ky 3---------
mov a,#10000011b
mov p1,a
lcall delay
mov a,#01000011B
mov p1,a
lcall delay
mov a,#00100011b
mov p1,a
lcall delay
mov a,#00010011b
mov p1,a
lcall delay
mov a,#00001011b
mov p1,a
lcall delay
mov a,#00000111b
mov p1,a
lcall delay
;----------chu ky 4----------
mov a,#10000111b
mov p1,a
lcall delay
mov a,#01000111B
mov p1,a
lcall delay
mov a,#00100111b
mov p1,a
lcall delay
mov a,#00010111b
mov p1,a
lcall delay
mov a,#00001111b
mov p1,a
lcall delay
;-------------chu ky 5--------
mov a,#10001111b
mov p1,a
lcall delay
mov a,#01001111B
mov p1,a
lcall delay
mov a,#00101111b
mov p1,a
lcall delay
mov a,#00011111b
mov p1,a
lcall delay
;--------chu ky 6------------
mov a,#10011111b
mov p1,a
lcall delay
mov a,#01011111B
mov p1,a
lcall delay
mov a,#00111111b
mov p1,a
lcall delay
;----chu ky 7----------
mov a,#10111111b
mov p1,a
lcall delay
mov a,#01111111B
mov p1,a
lcall delay
;------chu ky 8---------
mov a,#11111111b
mov p1,a
lcall delay
;chop 4 cai > sang = 3 lan delay--
mov a,#00000000b
mov p1,a
lcall delay
mov a,#11111111b
mov p1,a
lcall delay
mov a,#00000000b
mov p1,a
lcall delay
mov a,#11111111b
mov p1,a
lcall delay
lcall delay
lcall delay
;----------------
delay:
mov r2,#200
LLDL: mov r1,#200
LLA: nop
djnz r1,LLA
djnz r2,LLDL
ret
;-------------------
delay2:
mov r2,#250
LLDL2: mov r1,#250
LLB: NOP
nop
djnz r1,LLB
djnz r2,LLDL2
ret
end
Sorry Mod !! ko biết làm sao chèn code riêng cho nó gọn Thread ???
Comment