Chương 1: CHƯƠNG TRÌNHĐIỀUKHIỂN8LEDSÁNG DỒN I. Mục đích yêu cầu: hiểu cách sử dụng lệnh xoay kết hợp với lệnh logic để thực hiện chương trìnhđiềukhiểnledsáng dồn. II. Trình tự thực hiện: 1. Giải thuật: 2. Kết nối mạch theo trình tự : - Dùng bus dây kết nối port 0 với một trong bốn PINHD của dãy 32 led. Begin T ắ t 8led M ứ c 1 d ị ch chuy ể n t ừ led 1đến led8 End M ứ c 1 d ị ch chuy ể n t ừ led 1đến led 7 M ứ c 1 d ị ch chuy ể n t ừ led 1đến led 2 M ứ c 1 d ị ch chuy ể n v ề led1 - Gắn vi điềukhiển vào đế nạp 40 pin ( socket ) ở modul nạp của hệ thống 2. 3. Khởi động phần mềm, mở File mới và đặt tên file. Vd: bai1_4 4. Vi ết chươngtrình với tên file vừa đặt : ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx ;chuong trinhdieukhien port 0 sang don va tat het - cach I ;su dung bo thi nghiem PE-1,ket noi port 0 den 8led bang cap 8 soi ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx org 0200h ;khai bao dia chi luu tru vung du lieu ma: db 00000000b ;byte du lieu nay luu vao o nho co dia chi 0200H ;lan thu nhat la 8 byte db 00000001b ;byte du lieu nay luu vao o nho co dchi 0201H db 00000010b ;tuong tu cho cac byte du lieu con lai db 00000100b db 00001000b db 00010000b db 00100000b db 01000000b db 10000000b ;lan thu hai la 7 byte db 10000001b db 10000010b db 10000100b db 10001000b db 10010000b db 10100000b db 11000000b ;lan thu 3 la 6 byte db 11000001b db 11000010b db 11000100b db 11001000b db 11010000b db 11100000b ;lan thu 4 la 5 byte db 11100001b db 11100010b db 11100100b db 11101000b db 11110000b ;lan thu 5 la 4 byte db 11110001b db 11110010b db 11110100b db 11111000b ;lan thu 6 la 3 byte db 11111001b db 11111010b db 11111100b ;lan thu 7 la 2 byte db 11111101b db 11111110b ;lan thu 8 la 1 byte db 11111111b ;byte du lieu cuoi cung = FFH ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx org 0000h ;khai bao dia chi chtr chinh port0_44: mov dptr,#0200h ;nap dia chi luu du lieu vao thghi dptr port0_4a: movc a,@a+dptr;lay du lieu tu bo nho dua vao A mov p0,a ;goi ra port 0 lcall delay ;goi chtr con delay inc dptr ;tang dptr len o nho ke cjne a,#0ffh,port0_4a ;ktra co phai la byte ket thuc hay chua sjmp port0_44 ;quay tro lam lai tu dau khi da het du lieu ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx delay: mov r6,#0ffh de2 : mov r7,#0ffh de1 : djnz r7,de1 djnz r6,de2 ret end 5. Th ực hiện các bước từ 5 đến 9 giống như các bài trước. Theo cách viết1 ta hãy quan sát dữ liệu trong chươngtrình đã được sắp xếp theo đúng trình tự và chươngtrình chỉ thực hiện nhiệm vụ là di chuyển lần lược các byte dữ liệu có trong bộ nhớ đem gởi vào A và sau đó gởi ra port 0. Lệnh “ma: db dữ liệu “ có chức năng nạp các byte dữ liệu vào vùng nhớ có địa chỉ 0200H. Dữ liệu viết dưới dạng số nhị phân cho dễ nhìn thấy và có thể viết dưới dạng số hex – khi đó chươngtrình sẽ ngắn hơn rất nhiều. Phần khai báo dữ liệu dưới dạng số hex như sau: org 0200h ;khai bao dia chi luu tru vung du lieu ma: db 00H DB 01H,02H,04H,08H,10H,20H,40H,80H DB 81H,82H,84H,88H,90H,0A0H,0C0H DB 0C1H,0C2H,0C4H,0C8H,0D0H,0E0H DB 0E1H,0E2H,0E4H,0E8H,0F0H DB 0F1H,0F2H,0F4H,0F8H DB 0F9H,0FAH,0FCH DB 0FDH,0FEH DB 0FFH Chươngtrình giống như trên nhưng viết theo cách II: ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx ;chuong trinhdieukhien port 0 sang don va tat het - cach II ;ket noi port 0 den 8led bang cap 8 soi ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx org 0000h port0_05: mov r2,#00h ;luu trng thai ban dau mov r4,#08 ;goi bien dem so lan dich chuyen cua led port0_05a: mov r5, 04h ;tuong duong 'mov r5,r4' mov r3,#00h ;nap 00 vao r3 mov a,r3 ;chuyen r3 sang a orl a,r2 ;or voi noi dung chinh luu trong r2 mov p0,a ;goi ra port 0 de hien thi lcall delay ;goi chuongtrinh con delay setb c ;lam cho bit C = 1 port0_05b: mov a,r3 rlc a ;xoay noi dung thanh ghi A sang trai mov r3,a ;cat lai vao r3 de luu cho lan xu li ke orl a,r2 ;lay ket qua do or voi r2 roi goi ra p0 mov p0,a lcall delay clr c ;xoa Cy de chi dich 1led di djnz r5,port0_05b ;giam r5 neu chua bang 0 thi quay ve lai mov r2,a ;cat noi dung sau cung khi da dich chuyen 1led djnz r4,port0_05a ;giam bien dem de xu li lan ke sjmp port0_05 ;nhay ve lam lai tu dau ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx ;chuong trinh con delay ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx delay: mov r6,#0ffh de2 : mov r7,#0ffh de1 : djnz r7,de1 djnz r6,de2 ret end Chươngtrình khá phức tạp, khó hiểu bạn hãy tự nghiên cứu thử xem sao? . 11 100001b db 11 100 010 b db 11 10 010 0b db 11 1 010 00b db 11 110 000b ;lan thu 5 la 4 byte db 11 110 001b db 11 110 010 b db 11 110 100b db 11 111 000b ;lan thu 6 la 3 byte db 11 111 001b db 11 111 010 b db 11 111 100b ;lan. byte db 10 000001b db 10 000 010 b db 10 00 010 0b db 10 0 010 00b db 10 010 000b db 10 100000b db 11 000000b ;lan thu 3 la 6 byte db 11 000001b db 11 000 010 b db 11 00 010 0b db 11 0 010 00b db 11 010 000b db 11 100000b ;lan. 11 111 000b ;lan thu 6 la 3 byte db 11 111 001b db 11 111 010 b db 11 111 100b ;lan thu 7 la 2 byte db 11 111 101b db 11 111 110 b ;lan thu 8 la 1 byte db 11 111 111 b ;byte du lieu cuoi cung = FFH ;xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxx org