nghe noi may anh em bên thầy hưng đang làm mạch điều khiển từ xa bằng hồng ngoại! em tìm được mấy kai hay hay post cho anh em thử coi !!!!!
code asm luon nhe!!! :hiền lành:
ORG 0000H ;Điểm nhập của chương trình chính
LJMP MAIN
ORG 0003H ;Điểm nhập của I0ISR
LJMP I0ISR
ORG 000BH ;Điểm nhập của T0ISR
LJMP T0ISR
ORG 0030H
MAIN: MOV TMOD,#9 ;Chương trình chính
MOV IP,#2 ;ưu tiên ngắt cho bộ định thời 0
MOV B,#0
MOV R0,#0 ;Chứa vị trí bit dịch trong A
MOV R1,#20H ;Chứa địa chỉ của 1 byte trong ;RAM từ 20h đến 23h, 4 byte này
;chứa nội dung từ m• thu được và ;được ghi vào bằng cách định địa ;chỉ gián tiếp qua R1
MOV DPTR,#012CH ;Địa chỉ đầu bảng dữ liệu
MOV P0,#0 ;Tắt mọi thiết bị nối vào máy
MOV P1,#0
MOV P2,#0
SETB IT0 ;Kích khởi cạnh
MOV IE,#83H ;Cho phép các ngắt
SJMP $ ;Chờ ngắt
I0ISR: CLR TR0 ;Dừng bộ định thời
JB B.0,INT2 ;B.0=1 : đ• nhận sườn xung đầu
;tiên
SETB B.0
SJMP EXIT
INT2: MOV R7,TH0 ;Đọc byte cao của bộ định thời
JB B.1,KTBIT ;B.1=1 : đ• nhận bit khởi động
CJNE R7,#0E6H,N1
SJMP HALT
N1: JNC HALT
CJNE R7,#0E3H,N2
SJMP HALT
N2: JC HALT
SETB B.1
SJMP EXIT
KTBIT: CJNE R7,#0FCH,N3 ;Kiểm tra độ rộng xung
SJMP HALT
N3: JNC HALT
CJNE R7,#0F9H,N4
SJMP HALT
N4: JNC GAN1
CJNE R7,#0F8H,N5
SJMP HALT
N5: JNC HALT
CJNE R7,#0F5H,N6
SJMP HALT
N6: JNC GAN0
SJMP HALT
GAN0: CLR C ;Bit nhận giá trị ‘0’
SJMP N7
GAN1: SETB C ;Bit nhận giá trị ‘1’
N7: RLC A
CJNE R0,#7,N8
MOV @R1,A
MOV R0,#0
INC R1
SJMP EXIT
N8: INC R0
EXIT: MOV TH0,#0E4H ;Đặt lại các giá trị sau khi thu 1 bit
MOV TL0,#0A7H
SETB TR0
RETI
HALT: MOV R0,#0 ;Thiết lập lại các giá trị ban đầu
;nếu bit thu được sai
MOV R1,#20H
MOV B,#0
RETI
T0ISR: CLR TR0 ;Dừng bộ định thời
CJNE R0,#0,THOAT
CJNE R1,#24H,THOAT
MOV A,20H
CJNE A,#0CH,THOAT ;Kiểm tra m• Sanyo
MOV A,22H
RR A
RR A
RR A ;Tách lấy 5 bit mang tin
MOVC A,@A+DPTR ;Chiếu vào bộ m•
MOV B,#8 ;Xử lý để xuất tín hiệu ra cổng
DIV AB
MOV R0,A
MOV A,#1
MOV R1,B
N9: CJNE R1,#0,N10
SJMP N11
N10: DEC R1
RL A
SJMP N9
N11: CJNE R0,#0,N12
XRL P0,A
SJMP THOAT1
N12: CJNE R0,#1,N13
XRL P1,A
SJMP THOAT1
N13: CJNE R0,#2,THOAT
XRL P2,A
THOAT1: MOV R3,#0FAH
D1: MOV R2,#78H
CPL P0.0
DJNZ R2,$
MOV R2,#78H
CPL P0.0
DJNZ R2,$
MOV R2,#78H
CPL P0.0
DJNZ R2,$
DJNZ R3,D1
THOAT: MOV B,#0
MOV R0,#0
MOV R1,#20H
RETI
ORG 012CH
TABLE: DB 15 ;Bảng m• tham chiếu
DB 1
DB 0
DB 9
DB 0
DB 5
DB 0
DB 20
DB 17
DB 3
DB 19
DB 11
DB 0
DB 7
DB 0
DB 22
DB 16
DB 2
DB 18
DB 10
DB 13
DB 6
DB 0
DB 23
DB 0
DB 4
DB 14
DB 12
DB 0
DB 8
DB 21
DB 0