K thu t vi x lý c n b n vi u n 8051 Bài t p 1: Cho sáng l n l t t ng LED, m i LED sáng giây Begin T t t t c LED Sáng LED Tr giây T t LED 1, sáng LED Tr giây T t LED 2, sáng LED T t LED 7, sáng LED Tr giây Trên l u đ , vi c th hi n b ng l nh l u đ có th b ng cách chân ph ng (làm l n l t) ho c có th dùng l nh quay đ đ a bit = l n l t chân c ng làm LED sáng theo l n l t T t p tr đi, m c đ nh ch ng trình có khai báo: #include Cách chân ph org ljmp org main: mov ;Vi c t mov lcall mov lcall mov ng: 00h main 40h SP,#5fh t t t c LED đ p1,#11111110b tre_1s p1,#11111101b tre_1s p1,#11111011b c t đ ng làm reset lên, chân c ng đ u = ;sáng LED ;t t LED 1, sáng LED ;t t LED 2, sáng LED Written by Kieennx, MicroStudy group K thu t vi x lý c n b n vi u n 8051 lcall ;… mov lcall sjmp tre_1s p1,#01111111b tre_1s main mov r1,#10 mov r2,#100 mov r3,#100 tre_1s: loop1: loop2: loop3: nop ;… r3,loop3 r2,loop2 r1,loop1 end N u s d ng l nh quay ch ;… main: mov SP,#5fh mov a,#11111110b main_loop: mov P1,a lcall tre_1s rl a sjmp main_loop tre_1s: ;…nh trên… end ng trình s g n h n: L u ý đo n ch ng trình trên, ng n x p đ c kh i t o v i giá tr ban đ u c a ghi tr ng n x p SP 5fh, t c đ a ch hay d li u c t vào ng n x p s b t đ u t ô nh 60h tr Vi c kh i t o ng n x p m t thao tác không th thi u ch ng trình có s d ng l nh g i ch ng trình ho c ng t Written by Kieennx, MicroStudy group K thu t vi x lý c n b n vi u n 8051 Bài t p 2: ki m tra phím b m n i v i P3.2, phím đ b m phím t t c LED c b m sáng c LED, không Begin t P3.2 c ng vào Có phím b m? Sáng c LED T t c LED V i l u đ thu t toán nh ta vi t đ c ch ng trình sau: … org 00h ljmp main org 40h main: ;vi c đ t c ng P3.2 làm c ng vào đ c t đ ng th c hi n 8051 reset xong ;các LED c ng t đ ng đ c t t 8051 reset xong, c ng đ u = jnb P3.2,phim_bam mov P1,#0ffh ;t t t t c LED n u khơng có phím b m sjmp main phim_bam: mov P1,#0 ;sáng t t c LED n u có phím b m sjmp main end V i m ch ph n c ng nh trên, ta có th th c hành v ng t c a vi u n Bài toán th c hành đ t có th n u có phím b m đ o tr ng thái c a LED (đang sáng thành t t ng c l i) Nh v y n u ta b m phím, tr ng thái c a LED s đ c đ o l i, m i l n b m phím đ o m t l n N u không s d ng ng t, ta có th vi t ch ng trình g n gi ng v i ch ng trình trên, ch khác ph i thêm thao tác đ i nh phím tr c quay tr l i quét ki m tra n áp t i chân P3.2 N u khơng có thao tác này, chân P3.2 xu ng m c s b gây nhi u l n đ o tr ng thái LED b i chân P3.2 s đ c quét liên t c, th y m c l i đ o tr ng thái, cho đ n nh phím LED s sáng ho c t t, tùy thu c vào vi c l n đ o tr ng thái đ c th c hi n cu i Nh v y s không v i mong mu n ch đ o m t l n b m m t l n … main: jb P3.2,$ ;nh y t i ch ch cho đ n P3.2 = (t c ch cho đ n có phím b m Written by Kieennx, MicroStudy group K thu t vi x lý c n b n vi u n 8051 phim_bam: mov cpl mov jnb sjmp end a,P1 a P1,a P3.2,$ main ;đ c giá tr hi n th i c a c ng P1 ;đ o tr ng thái đ c đ c ;đ a tr l i c ng P1 gây đ o tr ng thái LED ;nh y t i ch đ đ i cho đên P3.2 = tr l i N u s d ng ng t, tr c s d ng ta ph i đ t ch đ cho phép ng t x y Phím đ c n i v i chân P3.2 chân ng t s (INT0) Ng t có 02 ch đ ng t theo m c ng t theo s n Ng t theo m c s liên t c gây ng t CPU ch ng m c n áp c a chân P3.2 m c th p Nh v y n u CPU th c hi n xong ch ng trình ph c v ng t mà chân P3.2 v n m c th p CPU s l i th c hi n ti p ch ng trình ph c v ng t Ng t theo s n ng c l i, ch gây ng t có s n tín hi u (trong tr ng h p 8051 s n xu ng), cịn sau chân tín hi u ng t dù m c th p hay cao hay có s n lên c ng khơng gây ng t n a Vi c đ t ch đ cho ng t đ c th c hi n b ng bit IT0 ghi TCON N u bit = ng t theo s n ng c l i Th c hành v i hai tr ng h p IT0 = ( ng v i ch đ ng t theo m c) IT0 = ( ng v i ch đ ng t theo s n xu ng), ta s th y đ c s khác bi t gi a chúng Tr ng h p ng t theo s n s cho ta k t qu gi ng nh gi i pháp không dùng ng t mà không thêm thao tác đ i chân P3.2 tr v m c Hi n t ng s gi s LED sáng, ta b m phím nh tay sau đó, có th LED s v n sáng ch không t t! Ng t c a 8051 đ c cho phép b i c p, th nh t c p dành riêng cho m i ng t, c p th hai c p chung cho t t c ng t Nh v y đ cho phép m t ng t x y ph i th a mãn c c p đó: cho phép riêng cho phép chung Các bit quy đ nh n c đ u n m ghi IE Ngoài đ s d ng m t ng t ta ph i vi t ch ng trình ph c v ng t đ t m t l nh nh y t i ch ng trình vi t vào đ a ch c a vector ng t t ng ng ó x y ng t, CPU s t đ ng (xin nh t đ ng!) th c hi n l nh đ t t i đ a ch c a vector ng t t ng ng Trong tr ng h p (tr ng h p ng t ngồi s 0) đ a ch vector ng t 03h b nh ch ng trình Ch ng trình gi i quy t toán s nh sau: … org 00h ljmp main org 03h ljmp ngat_0 org 40h main: mov SP,#5fh ;kh i t o ng n x p có dùng ng t setb it0 ;đ t ng t ch đ ng t theo s n cho ng t 0, n u mu n ng t theo m c khơng c n có l nh 8051 reset xong, t đ ng m c đ nh ng t theo m c (IT0 = 0) setb ex0 ;cho phép ng t c p riêng setb ea ;cho phép ng t c p chung ;khác v i ch ng trình tr c, bây gi s d ng ng t nên CPU không c n ph i th m dò m c n áp c a chân P3.2 mà s có th i gian làm vi c khác, có s ki n phím b m x y ra, c u trúc ng t s t phát hi n thông báo cho CPU đ x lý đáp ng main_loop: ;…có th làm tùy thích đây… sjmp loop Written by Kieennx, MicroStudy group K thu t vi x lý c n b n vi u n 8051 ngat_0: mov cpl mov reti a,P1 a P1,a end Qua t p ta th y đ c u m c a ng t CPU đ c t làm cơng vi c khác, có s ki n x y ng t s t báo cho CPU đ d ng công vi c làm l i đáp ng x lý Written by Kieennx, MicroStudy group