code thực hành vi xử lý gồm những code cơ bản về led đơn,ma trận phím,led 7 đoạn,ma trận phím điều khiển động cơ bước viết bằng C và cà hợp ngữ (asm),dễ hiểu cho mấy bạn học chuyên nghành điều khiển và tự động hóa hay điện tử
Trang 1I. LED ĐƠN
1. BÀI TẬP YÊU CẦU
• Viết chương trình điều khiển 16 led đơn: chớp tắt 5 lần 2 led dịch từ trái sang phải 3 leddịch từ phải sang trái sau đó lặp lại
Trang 2DICHLED:
MOV A,#0FFHLA1:
CLR C
RRC A
MOV P1,ALCALL DELAY
JB P1.6,LA1LA2:
RR A
MOV P1,ALCALL DELAY
JB P1.0,LA2MOV P1,#0FEHMOV P0,#07FHLCALL DELAYMOV A,#07FHMOV P1,#0FFHLA3:
CLR C
RRC A
MOV P0,ALCALL DELAY
JB P0.6,LA3
MOV P0,ALCALL DELAY
JB P0.0,LA4MOV P0,#0FEHCALL DELAYMOV P0,#0FFHLCALL DELAYMOV A,#0FFH
Trang 3CLR C
RLC A
MOV P0,ACALL DELAY
JB P0.2,LA5LA6:
RL A
MOV P0,ACALL DELAY
JB P0.7,LA6MOV P0,#3FHMOV P1,#0FEHCALL DELAYMOV P0,#7FHMOV P1,#0FCHCALL DELAYMOV P0,#0FFHMOV P1,#0F8HMOV A,#0F8HLA7:
RL A
MOV P1,ACALL DELAY
JB P1.7,LA7MOV P1,#3FHCALL DELAYMOV P1,#7FHCALL DELAYMOV P1,#0FFHCALL DELAYRET
DELAY:
MOV R5,#200
Trang 4MOV R6,#250 DJNZ R6,$
DJNZ R5,SC3 RET
Trang 5for(b=0;b<6;b++){
P1=(P1>>1)|0x80;delay_ms(500);}
P1=0xfe;
P0=0x7f;
delay_ms(500);P1=0xff;
P0=0x3f;
delay_ms(500);for(c=0;c<8;c++){
P0=(P0>>1)|0x80;delay_ms(500);}
for(c=0;c<3;c++){
P0=P0<<1;delay_ms(500);}
for(c=0;c<5;c++){
P0=(P0<<1)|0x01;delay_ms(500);}
P0=0x3f;
P1=0xfe;
delay_ms(500);P0=0x7f;
P1=0xfc;
delay_ms(500);
Trang 6II. 7 SEG (LED 7 ĐOẠN)
1. BÀI TẬP YÊU CẦU
• Viết chương trình điều khiển led 7 đoạn đếm từ 20 về 0
Trang 7MOV A,R0
DIV AB
MOV P2,#0BFHMOVC A,@A+DPTRMOV P0,A
CALL QUET
MOV P0,#0FFHMOV A,B
MOV P2,#7FHMOVC A,@A+DPTRMOV P0,A
CALL QUET
MOV P0,#0FFHMOV P2,#0DFHMOV P0,#0C0HCALL QUET
MOV P0,#0FFHMOV P2,#0EFHMOV P0,#0C0HCALL QUET
MOV P0,#0FFHMOV P2,#0F7HMOV P0,#0C0HCALL QUET
MOV P0,#0FFHMOV P2,#0FBHMOV P0,#0C0HCALL QUET
MOV P0,#0FFHMOV P2,#0FDHMOV P0,#0C0HCALL QUET
MOV P0,#0FFHMOV P2,#0FEH
Trang 9chuc=dem/10;dv=dem%10;for(i=0;i<130;i++){
Trang 101. BÀI TẬP YÊU CẦU
Viết chương trình hiên thị tên trường,họ tên sinh viên,mã số sinh viên,lớp,môn học giáo viên hướng dẫn nhóm thực hành trên 2 dòng của LCD
Trang 11CALL GUILENHMOV DPTR,#DONG1CALL HIENTHICALL DELAYMOV A,#0C0HLCALL GUILENHLCALL DELAYMOV DPTR,#DONG2CALL HIENTHICALL DELAYMOV A,#01H
CALL GUILENHMOV A,#80H
CALL GUILENHMOV DPTR,#DONG3CALL HIENTHICALL DELAYMOV A,#0C0HCALL GUILENHMOV DPTR,#DONG4CALL HIENTHICALL DELAYMOV A,#01H
CALL GUILENHMOV A,#80H
CALL GUILENHMOV DPTR,#DONG5CALL HIENTHICALL DELAYMOV A,#0C0HCALL GUILENHMOV DPTR,#DONG6CALL HIENTHICALL DELAY
Trang 12MOV A,#06H
LCALL GUILENHLCALL DELAYINC R0
CJNE R0,#15,HIENTHIMOV R0,#0
LCALL DELAYRET
DELAY:
MOV R4,#200
DC: MOV R5,#200
DJNZ R5,$
Trang 13DJNZ R4,DC
wait:
MOV TMOD,#10H
MOV TH1,#HIGH(-2000)MOV TL1,#LOW(-2000)CLR TF1
Trang 16lcd_out_ch(2,1,"GVHD:NGUYEN TRUNG DUNG");while(1)
Trang 17MOV R0,A
MOV DPTR,#MALEDLAP1:
MOV P0,#0FFHMOV B,#100
DIV AB
MOV P2,#0FDHMOVC A,@A+DPTRMOV P0,A
LCALL QUET
MOV P0,#0FFHMOV A,B
MOV B,#10
DIV AB
MOV P2,#0FBHMOVC A,@A+DPTRMOV P0,A
LCALL QUET
MOV A,B
MOV P0,#0FFHMOV P2,#0F7HMOVC A,@A+DPTRMOV P0,A
LCALL QUET
MOV P0,#0FFHMOV P2,#0FEH
Trang 18MOV P0,#0C0HLCALL QUETMOV A,R0SJMP LAP2QUETPHIM:
MOV P1,#0FEHJNB P1.4,XOAJNB P1.5,KEY1JNB P1.6,KEY2JNB P1.7,KEY3MOV P1,#0FDHJNB P1.4,KEY4JNB P1.5,KEY5JNB P1.6,KEY6JNB P1.7,KEY7MOV P1,#0FBHJNB P1.4,KEY8JNB P1.5,KEY9JNB P1.6,CONGJNB P1.7,TRUMOV P1,#0F7HJNB P1.4,BANGJNB P1.5,ANSRET
XOA:
JNB P1.4,$MOV A,#0JMP LAP2RET
KEY1:
JNB P1.5,$MOV A,#1JMP HIENTHIRET
Trang 19JNB P1.6,$MOV A,#2 JMP HIENTHIRET
KEY3:
JNB P1.7,$MOV A,#3JMP HIENTHIRET
KEY4:
JNB P1.4,$MOV A,#4JMP HIENTHIRET
KEY5:
JNB P1.5,$MOV A,#5JMP HIENTHIRET
KEY6:
JNB P1.6,$MOV A,#6JMP HIENTHIRET
KEY7:
JNB P1.7,$MOV A,#7JMP HIENTHIRET
KEY8:
JNB P1.4,$MOV A,#8JMP HIENTHI
Trang 20KEY9:
JNB P1.5,$MOV A,#9JMP HIENTHIRET
CONG:
JNB P1.6,$MOV R5,AMOV R1,#1JMP LAP2RET
TRU:
JNB P1.7,$MOV R5,AMOV R1,#2RET
BANG:
JNB P1.4,$CJNE R1,#0,KQ1JMP LAP2KQ1: CJNE R1,#1,KQ2
ADD A,R5MOV R6,AMOV R1,#0JMP HIENTHIKQ2: MOV 00H,A
MOV A,R5SUBB A,00HMOV R1,#0MOV R6,AJMP HIENTHIRET
ANS:
Trang 23HANG1=1;HANG2=0;if(COL1==0) {
while(COL1==0){
}
KEY=4;
}
if(COL2==0) {
while(COL2==0){
}
KEY=5;
}
if(COL3==0) {
while(COL3==0){
}
KEY=6;
}
if(COL4==0) {
while(COL4==0){
}
KEY=7;
}
HANG2=1;HANG3=0;if(COL1==0)
Trang 24while(COL1==0){
}
KEY=8;
}
if(COL2==0) {
while(COL2==0){
}
KEY=9;
}
if(COL3==0) {
while(COL3==0){
while(COL4==0){
while(COL1==0)
Trang 26V. ĐIỀU KHIỂN ĐỘNG CƠ BƯỚC (STEP MOTOR)
1. BÀI TẬP YÊU CẦU
Điều khiển động cơ bước theo yêu cầu:nhấn sw1 bật chế độ hiển thị và chạy động cơ.sw2 động cơquay thuận chậm.nhấn sw3 động cơ quay nghịch nhanh.nhấn sw4 động cơ dừng
2. PHẦN CỨNG
Trang 273. CHƯƠNG TRÌNH VIẾT BẰNG ASMORG 0000H
Trang 28MOV R6,#0MOV P3,#00HMOV 05H,#10MOV R3,#80CALL DELAYXX01:MOV 01H,#2XX1:MOV 00H,#230
TD1:SETB CMOV A,#00HX1:RLC A
MOV P3,ALCALL DELAYJNB P3.3,X1CALL HIENTHIDJNZ 00H,TD1DJNZ 01H,XX1 INC R6
DJNZ 05H,XX01JMP LAP1ON:
MOV R1,#1JMP LAP2NGHICH:
MOV R6,#0MOV P3,#00HMOV 04H,#30MOV R3,#20 CALL DELAYXX02:
MOV 03H,#2XX2:
MOV 02H,#230TD2:CLR C
Trang 29CALL HIENTHIMOV A,#10H
DJNZ 04H,XX02 JMP TD2
HIENTHI:
MOV DPTR,#MALEDMOV P0,#0FFHMOV B,#10
MOV A,R6
DIV AB
MOV P2,#0FBHMOVC A,@A+DPTRMOV P0,A
CALL QUET