Các module ngoại vi của MCS-51 doc

28 325 1
Các module ngoại vi của MCS-51 doc

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Peripherals - MCS 51 1 Các module ngoi vi ca MCS 51™ Peripherals - MCS 51 2 Plan ¸ Timers/Counters ¸ Truyn tin ni tip ¸ Ngt và hot đng ca ngt trong 8051 Peripherals - MCS 51 3 Timer ¸ Timer là b đm nh phân vi ngun xung clock ̈ T b xung chun (thng ly t b on-chip oscillator ca VK) ̈ T tín hiu bên ngoài ¸ ng dng ca timer ̈ To các s kin vi chu k đnh trc (timer) ̈ m các s kin bên ngoài (counter) ¸ 8051 có 2 b timer 16 bits count-up (đm thun, giá tr tng dn sau mi xung nhp) vi 4 mode hot đng ̈ mode 0: ch đ 13 bits ̈ mode 1: ch đ 16 bits ̈ mode 2: ch đ 8 bit có auto-reload ̈ mode 3: ch đ đc bit Peripherals - MCS 51 4 iu khin Timer ̈ THn : thanh ghi 8 bit cha byte cao ca b đm ̈ TLn : thanh ghi 8 bit cha byte thp ca b đm ̈ TRn : bit cho phép timer hot đng ¸ TRn = 0 å timer ngng hot đng ¸ TRn = 1 å timer đc phép hot đng ̈ M1, M0 : 2 bit xác đnh 4 mode ca Timer ̈ TFn : bit c báo b đm tràn ̈ C/Tn : bit thit lp Timer hay Counter ¸ C/T = 0 å Timer ly xung clock t on-chip oscillator ¸ C/T = 1 å Timer ly xung clock t bên ngoài qua port Tn ̈ GATE : kt hp vi TRn đ điu khin b đm ¸ GATE = 1 å Timer ch hot đng khi TRn=1 và INTn = HIGH ¸ GATE = 0 å Timer hot đng khi TRn=1 Peripherals - MCS 51 5 TMOD Peripherals - MCS 51 6 TCON Peripherals - MCS 51 7 Mode 0 Timer1 mode 0 Timer clock Peripherals - MCS 51 8 ¸ Timer/Counter 13 bit ̈ 8 bit cao là thanh ghi THx ̈ 5 bit thp là 5 bit MSB ca thanh ghi TLx (3 bit thp ca thanh ghi TL không s dng) ¸ TFx = 1 khi ni dung ca b đm tràn Peripherals - MCS 51 9 Mode 1 ̈ Ging mode 0, ngoi tr s dng b đm 16 bit, thay vì 13 bit ¸ 8 bit MSB là thanh ghi THx ¸ 8 bit LSB là thanh ghi TLx Timer1 mode 1 Peripherals - MCS 51 10 Mode 2 Peripherals - MCS 51 11 ¸ S dng thanh ghi TLx làm thanh ghi ca Timer ¸ Khi ni dung b đm tràn (TLx chuyn t FFå00) ̈ TFx đc dng lên ̈ Ni dung ca THx đc t đng np vào TLx Peripherals - MCS 51 12 Mode 3 ¸ Nu Timer0  mode 3 ̈ B Timer/Counter 8 bit s dng TL0 å tác đng đn TF0 ̈ B Timer 8 bit s dng TH0 å tác đng đn TF1 ¸ Nu Timer1  mode 3 ̈ dng hot đng ̈ ni dung ca các thanh ghi TH1 và TL1 không thay đi ¸ Trong khi Timer0 hot đng  mode 3 ̈ Timer1 vn có th hot đng bình thng  các mode 0, 1, 2 ̈ Timer1 không th s dng TF1 (vì đc Timer TH0 s dng) Peripherals - MCS 51 13 Timer 0  mode 3 Peripherals - MCS 51 14 Th tc khi to Timer ¸ Khi to TMOD ¸ Khi to các giá tr THx và TLx ¸ Thit lp bit TRx = 1 đ cho phép Timer làm vic Peripherals - MCS 51 15 c ni dung Timer “On-the-fly” ¸ c ni dung Timer trong khi Timer đang hot đng ̈ c TL ̈ c TH å Có th có sai sót: khi đc ni dung ca TH thì TL b thay đi ¸ Khc phc ̈ c TH ̈ c TL ̈ c TH, kimt tra nu khác vi ln đc đu thì lp li thao tác đc Peripherals - MCS 51 16 Ví d 1 ¸ Vit chng trình trình to xung vuông đu tn s 10KHz ti cng P1.0 s dng Timer0. Bit MCS-51 s dng tn s f OSC 12MHz Peripherals - MCS 51 17 ¸ Tn s = 10KHz: ̈ P1.0 =LOW trong 50us ̈ P1.0 = HIGH trong 50us ¸ f OSC = 12MHz å chu k lnh = 1us ¸ S dng Timer0 đm 50us, mi ln tràn s lp bit P1.0 ¸ Có th s dng Timer0  mode 2 (auto-reload). Khi đócn np TH0 = 0x100 – 32 = 0xE0 ̈ Khi to Timer0: TMOD = 00000010b ¸ Bit C\T = 0 å hot đng nh timer ¸ Bit M1 M0 = 10 å hot đng mode 2 ̈ Thanh ghi TH0 = 205 Peripherals - MCS 51 18 ; source file “wave1.a51” org 0000h ljmp start org 100h start: mov TMOD,#02 ; timer + mode 2 mov TH0,#0xE0 setb TR0 ; start timer 0 here: jnb TF0,here clr TF0 ; xóa c TF0 cpl P1.0 sjmp here END Peripherals - MCS 51 19 Ví d 2 ¸ Vit chng trình trình to xung vuông đu tn s 1KHz ti cng P1.0 s dng Timer0. Bit MCS-51 s dng tn s f OSC 12MHz Peripherals - MCS 51 20 ¸ Tn s = 1KHz: ̈ P1.0 =LOW trong 500us ̈ P1.0 = HIGH trong 500us ¸ f OSC = 12MHz å chu k lnh = 1us ¸ S dng Timer0 đm 500us, mi ln tràn s lp bit P1.0 ¸ Không th s dng Timer0  mode 2 (auto-reload) vì maximun ch đm đc 255 us. ¸ S dng Timer0  mode 1 (mode 16 bit). Khi đócn np TH0-TL0 = 0x10000-1F4 = 0xFE0C ̈ Khi to Timer0: TMOD = 00000010b ¸ Bit C\T = 0 å hot đng nh timer ¸ Bit M1 M0 = 10 å hot đng mode 2 ̈ Thanh ghi TH0 = 0xFE, TL0 = 0x0C [...]... ̈ Vi t m t byte c n truy n n SBUF nh n thông tin ¸ ̈ Thi t l p các bit REN=1 và RI=0 trong thanh ghi SCON Peripherals - MCS 51 27 Peripherals - MCS 51 28 Mode 1 – UART 8-bit, t c ¸ ¸ có th thay i UART: Universal Asynchronous Recever/Transmitter Truy n tin n i ti p không ng b 10 bit ̈ ̈ ̈ ̈ ̈ ̈ 1 bit START 8 bit DATA (LSB u tiên) 1 bit STOP T c truy n c quy t nh b i Timer1 Transmit c start b i l nh vi. .. Peripherals - MCS 51 30 Mode 2 ¸ Truy n tin 11 bit ̈ ̈ ¸ Bit th 9 c a data: ̈ ̈ ¸ ¸ ¸ 9 bit data 1 bit start, 1 bit stop Bit TB8 Bit RB8 i v i vi c truy n i v i vi c nh n T c truy n c nh b ng 1/32 fOSC (SMOD = 0) ho c 1/64 fOSC (SMOD=1) Transmit c start b i l nh vi t n SBUF Khi nh n 9 bit data, c RI s c set lên 1 (c n xóa b i ph n m m) Peripherals - MCS 51 31 Peripherals - MCS 51 32 Mode 3 ¸ Gi ng nh... c software g i n CPU yêu c u th c hi n m t thao tác hardware interrupt: CPU c t gi các thông tin c n thi t sau ó chuy n qua ch ng trình ph c v ng t ( ISR interupt service routine) software interrupt: do m t l nh c thi t k c bi t trong t p l nh c a CPU gây ra ̈ ̈ ¸ 8051 có 5 ngu n ng t 2 ngu n ng t ngoài 2 ngu n ng t t các b timer 1 ngu n ng t t b truy n tin n i ti p ̈ ̈ ̈ Peripherals - MCS 51 Th c hi... n u ng t c CPU ch p nh n thì ch ng trình chính s b “ng t” và các thao tác sau s c ti n hành (b i ph n c ng): ̈ ̈ ̈ ̈ ̈ ̈ ¸ L nh hi n t i s c hoàn thành n t PC c x p vào ng n x p Tr ng thái c a ng t hi n t i c c t gi Các ng t cùng m c s b c m PC c n p giá tr a ch c a vector ng t t ng ng t i ó ch a ch ng trình ph c v ng t (ISR: Interrupt Service Routine) C báo ngu n ng t s b xóa (ngo i tr c báo ng t RI... reception TI ; TR1 ; start timer 1 Peripherals - MCS 51 39 Ch ng trình trên có th vi t g n l i nh sau ; uart_init.a51 org 0000h ljmp start start: mov SCON,#0x52 mov TMOD,#0x20 mov TH1,#0xF4 ; clr RI ; setb REN ; enables serial reception ; setb TI ; ; setb TR1 ; start timer 1 END ¸ Peripherals - MCS 51 40 d - truy n ký t ASCCI ¸ Vi t ch ng trình con OUTCHR truy n ký t ASCII c t trong thanh ghi A lên ng... is not empty ;yes, Tx is empty ;send character Peripherals - MCS 51 42 d - nh n ký t ¸ Vi t ch ng trình con INCHAR nh n ký t t Rx, ký t nh n c c t thanh ghi A Peripherals - MCS 51 ; inchar.a51 inchar: jnb RI,$ clr RI mov a,SBUF ret 43 ; wait for character Peripherals - MCS 51 44 d - truy n và nh n ký t ¸ Vi t ch t Rx ̈ ̈ ¸ ¸ ng trình nh n ký t ch theo chu n ASCII N u ký t là ch th ng å i qua ch... sai, hãy hi u ch nh l i Peripherals - MCS 51 22 s d ng thông tin v state (ho c sec) o kho ng th i gian th c hi n các l nh Peripherals - MCS 51 23 Truy n tin n i ti p u i m ¸ ̈ ̈ ¸ Nh ̈ Ti t ki m dây n i n gi n khi thi t k m ch in c i m T c ch m Peripherals - MCS 51 24 C ng n i ti p c a MCS-51TM c i m ¸ ̈ ̈ Truy n nh n theo t ng byte Hai c ng n i ti p TxD RxD ¸ ¸ ̈ ̈ Có kh n ng truy n, nh n ng th i... tin, khi ó t c truy n c xác nh theo công th c Peripherals - MCS 51 35 Peripherals - MCS 51 36 d - kh i t o UART ¸ Vi t o n ch ng trình kh i t o c ng truy n tin n i ti p ch UART – 8bit, s d ng Timer1 t o t c truy n 2400 bps Bi t fOSC = 11.0592 MHz Peripherals - MCS 51 ¸ B truy n tin làm vi c ̈ ̈ ¸ T c ̈ ̈ ̈ ̈ ¸ ¸ SM0 = 0 SM1 = 1 ch 37 mode 1: SCON = 01000000b 2400 bps v i fOSC = 11.0592MHz: SMOD = 0 . Peripherals - MCS 51 1 Các module ngoi vi ca MCS 51™ Peripherals - MCS 51 2 Plan ¸ Timers/Counters ¸ Truyn. vi vi c truyn ̈ Bit RB8 đi vi vi c nhn ¸ Tc đ truyn c đnh bng 1/32 f OSC (SMOD = 0) hoc 1/64 f OSC (SMOD=1) ¸ Transmit đc start bi lnh vi t

Ngày đăng: 23/03/2014, 02:20

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan