CÙNG HỌC TẬP VÀ CHIA SẺ
 
IndexNỘI QUYCalendarTrợ giúpTìm kiếmĐăng kýĐăng Nhập

Share | 
 

 GIAO TIẾP TRUYỀN NHẬN SONG SONG 8 BIT VỚI 8051

Xem chủ đề cũ hơn Xem chủ đề mới hơn Go down 
Tác giảThông điệp
Sunset_Pro
Thành viên chính thức
Thành viên chính thức


Tổng số bài gửi : 55
Điểm : 97
Danh tiếng : 11
Ngày tham gia : 25/12/2010
Đến từ : UNETI

Bài gửiTiêu đề: GIAO TIẾP TRUYỀN NHẬN SONG SONG 8 BIT VỚI 8051   Sat Jan 08, 2011 4:28 pm

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.asm
quet 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.asm
quet 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.asm
scanning 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


Được sửa bởi sunset_sunset ngày Sat Jan 08, 2011 4:34 pm; sửa lần 3.
Về Đầu Trang Go down
Sunset_Pro
Thành viên chính thức
Thành viên chính thức


Tổng số bài gửi : 55
Điểm : 97
Danh tiếng : 11
Ngày tham gia : 25/12/2010
Đến từ : UNETI

Bài gửiTiêu đề: Re: GIAO TIẾP TRUYỀN NHẬN SONG SONG 8 BIT VỚI 8051   Sat Jan 08, 2011 4:29 pm

CÁC BẠN ĐỌC THAM KHẢO.CẢM ƠN !
Về Đầu Trang Go down
trungkienksnb.tk
Thành viên tích cực
Thành viên tích cực


Tổng số bài gửi : 115
Điểm : 195
Danh tiếng : 15
Ngày tham gia : 06/12/2010
Tuổi : 28
Đến từ : Ninh Bình

Bài gửiTiêu đề: Re: GIAO TIẾP TRUYỀN NHẬN SONG SONG 8 BIT VỚI 8051   Sat Jan 08, 2011 4:39 pm

Thank!
Về Đầu Trang Go down
http://trungkienksnb.tk
star_honxu
Thành viên mới
Thành viên mới


Tổng số bài gửi : 9
Điểm : 9
Danh tiếng : 0
Ngày tham gia : 08/01/2011

Bài gửiTiêu đề: anh   Sun Jan 09, 2011 10:35 pm

ban co the tham khao chuong trinh truyen i2c hien thi lcd 16.2
/*****************************************************
This program was produced by the
CodeWizardAVR V1.24.8d Professional
Automatic Program Generator
© Copyright 1998-2006 Pavel Haiduc, HP InfoTech s.r.l.
[You must be registered and logged in to see this link.]

Project :
Version :
Date : 8/15/2010
Author :
Company : dien_tdhk1a
Comments:


Chip type : ATmega16
Program type : Application
Clock frequency : 16.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include
#include

// I2C Bus functions
#asm
.equ __i2c_port=0x15 ;PORTD
.equ __sda_bit=0
.equ __scl_bit=1
#endasm
#include

// DS1307 Real Time Clock functions
#include

// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x18 ;PORTB
#endasm
#include

// Declare your global variables here
unsigned char h,m,s;
unsigned char day,month,year;
void lcd_putnum(unsigned char x)
{
unsigned tram,chuc,donvi;
tram=x/100;
chuc=(x-tram*100)/10;
donvi=(x-tram*100-chuc*10);
lcd_putchar(tram+48);
lcd_putchar(chuc+48);
lcd_putchar(donvi+48);

}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port A initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTA=0x00;
DDRA=0x00;

// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;

// Port C initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Normal top=FFh
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
OCR0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
// INT2: Off
MCUCR=0x00;
MCUCSR=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// I2C Bus initialization
i2c_init();

// DS1307 Real Time Clock initialization
// Square wave output on pin SQW/OUT: On
// Square wave frequency: 1Hz
rtc_init(0,1,0);

// LCD module initialization
lcd_init(16);
rtc_set_time(10,10,10);
rtc_set_date(15,8,2010);

while (1)
{
// Place your code here
rtc_get_time(&h,&m,&s);
rtc_get_time(&day,&month,&year);
//hien thi lcd
lcd_clear();
delay_ms(10);
lcd_gotoxy(0,0);
lcd_putsf("TIME:");
lcd_putnum(h);
lcd_putsf("-");
lcd_putnum(m);
lcd_putsf("-");
lcd_putnum(s);
lcd_gotoxy(0,1);
lcd_putsf("DATE:");
lcd_putnum(day);
lcd_putsf("-");
lcd_putnum(month);
lcd_putsf("-");
lcd_putnum(year);
delay_ms(500);
};
}

[You must be registered and logged in to see this image.][You must be registered and logged in to see this image.]
Về Đầu Trang Go down
Sponsored content




Bài gửiTiêu đề: Re: GIAO TIẾP TRUYỀN NHẬN SONG SONG 8 BIT VỚI 8051   Today at 7:54 am

Về Đầu Trang Go down
 
GIAO TIẾP TRUYỀN NHẬN SONG SONG 8 BIT VỚI 8051
Xem chủ đề cũ hơn Xem chủ đề mới hơn Về Đầu Trang 
Trang 1 trong tổng số 1 trang

Permissions in this forum:Bạn không có quyền trả lời bài viết
 :: CÔNG NGHỆ KỸ THUẬT ĐIỆN TỬ ,TRUYỀN THÔNG :: VI XỬ LÝ- VI ĐIỀU KHIỂN :: Phần mềm và trao đổi kiến thức môn-
Chuyển đến