I/ SƠ ÐỒ KHỐI -CÁC CHÂN CHỨC NĂNG BỘ TRUYỀN SONG SONG DỮ LIỆU 8 BIT CỦA 8051 VỚI 8255 ; KỸ THUẬT TRUYỀN SONG SONG 8 BIT VÀ QUÉT MATTRIX 24 CỘT DÙNG NGẮT NGOÀI[You must be registered and logged in to see this image.]- 8255A-5 là vi mạch giao tiếp song song rất thông dụng trong toàn các hệ thống .Vi mạch này có 24 chân cho thiết bị I/O có thể lập trình hoạt động trong 3 mode khác nhau .8255A-5 có thể nối ghép bất kỳ thiết bị vào ra kiểu TTL và tương thích với 8088 .8255A-5 thường được sử dụng để ghép nối với bàn phím và cổng máy in song song trong các máy PC . Ba cổng vào ra của nó được lập trình thành các nhóm 12 chân .Nhóm A bao gồm cổng A ( PA7 - PA0 ) và nửa cao của cổng C (PC7 - PC4 ) , nhóm B bao gồm cổng B (PB7 - PB0 ) và nửa thấp của cổng C ( PC3 - PC0 ). 8255A-5 được chọn bằng chân CS của nó để lập trình và phục vụ việc ghi đọc ra cổng I/O . Hai chân chọn thanh ghi nội để lập trình hoặc hoạt động .Trong máy PC 8255A-5 được giải mã tại địa chỉ 60h-63h . Ðể 8255A-5 có thể đọc ghi thì chân CS phải ở mức logic 0 và địa chỉ I/O phải được nối với chân A1 và A0 ,không cần quan tâm đến các chân địa chỉ cổng còn lại và được giải mã bên ngoài để chọn 8255A-5
- CÁC BẠN LOAD TÀI LIỆU TẠI ĐÂY:
[You must be registered and logged in to see this link.]- ĐÂY LÀ MẠCH MÔ PHỎNG:
[You must be registered and logged in to see this link.]- CHƯƠNG TRÌNH:
* bonhanslave8051-M01A.asmquet equ 2fh
moadd EQU 0
dataadd equ 30h
framebytemodul EQU 48
conhandulieu equ r7
org 0
jmp setup
org 03h
jmp exint0
org 13h
jmp exint1
;------------------------------------------------------------------------
; ngat ngoai 00 , dung truyen du lieu
exint0:
jb p3.1,skip01
mov dptr,#0
skip01:
push acc
mov a,dph
cjne a,#high(moadd),skip02
mov a,dpl
cjne a,#low(moadd),skip02
mov conhandulieu,#1
skip02:
mov a,dph
cjne a,#high(moadd+framebytemodul),skip03
mov a,dpl
cjne a,#low(moadd+framebytemodul),skip03
mov conhandulieu,#0
mov r0,#dataadd
skip03:
mov a,conhandulieu
jz skip04
mov @r0,p1
inc r0
skip04:
inc dptr
exitdata:
pop acc
reti
;------------------------------------------------------------------------
; ngat ngoai 01 dung quet cot
exint1:
push acc
mov p0,#0ffh
mov p2,#0ffh
jb p3.4,skipA
mov quet,#0
skipA:
mov a,quet
clr c
rlc a
add a,#dataadd
mov r4,a
mov r1,a
mov a,@r1
mov r2,a
mov a,r4
inc a
mov r1,a
mov a,@r1
mov r3,a
mov p0,r2
mov p2,r3
inc quet
pop acc
reti ; ngat ngoai hien thi cot quet
;------------------------------------------------------------------------
setup:
mov DPTR,#0
mov R0,#dataadd
mov IE,#10000101b
setb it0
setb it1
mov r7,#0
bandau:
JMP bandau
end
*bonhanslave8051-M01B.asmquet equ 2fh
moadd EQU 48
dataadd equ 30h
framebytemodul EQU 48
conhandulieu equ r7
org 0
jmp setup
org 03h
jmp exint0
org 13h
jmp exint1
;------------------------------------------------------------------------
; ngat ngoai 00 , dung truyen du lieu
exint0:
jb p3.1,skip01
mov dptr,#0
skip01:
push acc
mov a,dph
cjne a,#high(moadd),skip02
mov a,dpl
cjne a,#low(moadd),skip02
mov conhandulieu,#1
skip02:
mov a,dph
cjne a,#high(moadd+framebytemodul),skip03
mov a,dpl
cjne a,#low(moadd+framebytemodul),skip03
mov conhandulieu,#0
mov r0,#dataadd
skip03:
mov a,conhandulieu
jz skip04
mov @r0,p1
inc r0
skip04:
inc dptr
exitdata:
pop acc
reti
;------------------------------------------------------------------------
; ngat ngoai 01 dung quet cot
exint1:
push acc
mov p0,#0ffh
mov p2,#0ffh
jb p3.4,skipA
mov quet,#0
skipA:
mov a,quet
clr c
rlc a
add a,#dataadd
mov r4,a
mov r1,a
mov a,@r1
mov r2,a
mov a,r4
inc a
mov r1,a
mov a,@r1
mov r3,a
mov p0,r2
mov p2,r3
inc quet
pop acc
reti ; ngat ngoai hien thi cot quet
;------------------------------------------------------------------------
setup:
mov DPTR,#0
mov R0,#dataadd
mov IE,#10000101b
setb it0
setb it1
mov r7,#0
bandau:
JMP bandau
end
*boquetcot.asmscanning equ p3.5
DONGBOQUET equ p3.7
QUET equ p3.6
org 0
jmp setup
quet16cot:
demcotquet equ 070h ;o nho chua gia tri dem cot quet
push acc
setb DONGBOQUET
mov a,demcotquet
jnz skip01
clr DONGBOQUET
skip01:
setb scanning
mov r7,#40
wait: djnz r7,$ ; cho cho cac modul lay het du lieu.
clr QUET
nop
nop
setb QUET
mov b,#3
mul ab
mov r1,a
mov dptr,#chuoiquet
movc a,@a+dptr
mov r0,a
mov a,r1
inc dptr
movc a,@a+dptr
mov r2,a
mov a,r1
inc dptr
movc a,@a+dptr
mov r3,a
mov a,r0
mov p0,a
mov a,r2
mov p2,a
mov a,r3
mov p1,a
inc demcotquet
mov a,demcotquet
cjne a,#24,skip02
mov demcotquet,#0
skip02:
pop acc
clr scanning
ret
setup:
clr a
mov demcotquet,a
setb QUET
setb DONGBOQUET
bandau:
call quet16cot
call delay_24prs
jmp bandau
delay_24prs:
mov r4,#1
d3_: mov r5,#2
d2_: mov r6,#200
d1_: djnz r6,$
djnz r5,d2_
djnz r4,d3_
ret
begadd:
chuoiquet:
quethang01:
db 00000001b
db 00000000b
db 00000000b
quethang02:
db 00000010b
db 00000000b
db 00000000b
quethang03:
db 00000100b
db 00000000b
db 00000000b
quethang04:
db 00001000b
db 00000000b
db 00000000b
quethang05:
db 00010000b
db 00000000b
db 00000000b
quethang06:
db 00100000b
db 00000000b
db 00000000b
quethang07:
db 01000000b
db 00000000b
db 00000000b
quethang08:
db 10000000b
db 00000000b
db 00000000b
quethang09:
db 00000000b
db 00000001b
db 00000000b
quethang10:
db 00000000b
db 00000010b
db 00000000b
quethang11:
db 00000000b
db 00000100b
db 00000000b
quethang12:
db 00000000b
db 00001000b
db 00000000b
quethang13:
db 00000000b
db 00010000b
db 00000000b
quethang14:
db 00000000b
db 00100000b
db 00000000b
quethang15:
db 00000000b
db 01000000b
db 00000000b
quethang16:
db 00000000b
db 10000000b
db 00000000b
quethang17:
db 00000000b
db 00000000b
db 00000001b
quethang18:
db 00000000b
db 00000000b
db 00000010b
quethang19:
db 00000000b
db 00000000b
db 00000100b
quethang20:
db 00000000b
db 00000000b
db 00001000b
quethang21:
db 00000000b
db 00000000b
db 00010000b
quethang22:
db 00000000b
db 00000000b
db 00100000b
quethang23:
db 00000000b
db 00000000b
db 01000000b
quethang24:
db 00000000b
db 00000000b
db 10000000b
end
*botruyenmaster.asm
scanning equ p3.4
CTRLDATA equ p3.2
RESETFRAME equ p3.1
org 0
jmp setup
framebytenum equ 97 ;(=(TONGSOMODUL*SOBYTEMOIMODUL)+1;VD: (2 MODUL * 48)+1)
setup:
cham1 equ 1
cham2 equ 120
cham3 equ 255
hsobytetruyen equ r7
lsobytetruyen equ r6
mov dptr,#begadd
clr a
movc a,@a+dptr
cpl a
mov r1,a
mov hsobytetruyen,#0
mov lsobytetruyen,#0
setb CTRLDATA
bandau:
jb scanning,$ ; cho sau khi quet cot xong moi truyen du lieu
setb RESETFRAME ; reset frame truyen sau khi gui xong 1 framebyte truyen
cjne hsobytetruyen,#0,skip01
cjne lsobytetruyen,#0,skip01
clr RESETFRAME
skip01: mov p1,r1 ; gui 1 byte truyen qua port 01
clr CTRLDATA
nop
nop
setb CTRLDATA
mov a,#1 ; tang so byte truyen len 1 byte
add a,lsobytetruyen
mov lsobytetruyen,a
mov a,#0
addc a,hsobytetruyen
mov hsobytetruyen,a ; tang so byte truyen len 1 byte
cjne hsobytetruyen,#high(framebytenum),skip02
cjne lsobytetruyen,#low(framebytenum),skip02
mov r4,#cham1 ; lam cham toc do truyen sau khi gui het 1 framebyte truyen
d3_: mov r3,#cham2
d2_: mov r2,#cham3
d1_: djnz r2,$
djnz r3,d2_
djnz r4,d3_
mov hsobytetruyen,#0
mov lsobytetruyen,#0
inc dptr
inc dptr
mov a,dph
cjne a,#high(finadd),skip02
mov a,dpl
cjne a,#low(finadd),skip02
mov dptr,#begadd
skip02:
mov a,dpl ; tinh so byte truyen voi dptr
push acc
add a,lsobytetruyen
mov dpl,a
mov a,dph
push acc
addc a,hsobytetruyen
mov dph,a
clr a
movc a,@a+dptr
cpl a
mov r1,a
pop acc
mov dph,a
pop acc
mov dpl,a
skip04:
jmp bandau
begadd:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
===HIỂN THỊ DÒNG " QUẢNG CÁO "========================
db 192,248,224,252,32,4,32,20,32,12,224,254,192,249,0,1
db 224,248,224,252,0,4,0,4,0,4,224,252,224,248,0,0
db 128,252,192,252,32,64,41,64,39,64,195,252,128,252,0,0
db 224,252,224,252,128,128,0,192,0,96,224,252,224,252,0 ,0
db 192,248,224,252,32,4,32,4,32,68,96,124,64,120,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 192,248,224,252,32,4,32,4,32,4,96,12,64,8,0,0
db 128,252,192,252,34,64,35,64,35,64,193,252,128,252,0,0
db 192,248,224,252,32,4,32,4,32,4,224,252,192,248,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
finadd:
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
end