CÂU 3: thiết kế mạch và viết chương trình hiện thị các led sáng liên tiếp trong mạch có 8led được nối vào port2 của vi điều khiển led 1 sáng các led còn lại tát, led 2 sáng các led còn
Trang 1NGÂN HÀNG CÂU HỎI ÔN THI VẤN ĐÁP TRÊN MÁY TÍNH
Môn học: Vi xử lý – Vi điều khiển
DẠNG 1:
hiển thị lên 1 led7 thanh
Mình thấy nếu chỉ hiển thị 1 led 7 thanh thì dễ và đếm được 9 lần vậy mình làm 2 led7 thanh đếm từ 01->99 lần
Câu 2 như câu 1 chỉ thay chân công tác
Trang 2CLR P2.1 SETB P2.1
; hien thi so thu hai hang chuc - MOV A,B
MOVC A,@A+DPTR MOV P0,A
CLR P2.2 SETB P2.2
CALL DELAY JMP DIEM
DELAY:MOV R7,#255
KT2:MOV R6,#255
KT1:NOP
NOP NOP DJNZ R6,KT1 DJNZ R7,KT2 RET
MALED7:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
Hình vẽ
Trang 3CÂU 3: thiết kế mạch và viết chương trình hiện thị các led sáng liên tiếp trong mạch có 8led được nối vào port2 của vi điều khiển ( led 1 sáng các led còn lại tát, led 2 sáng các led còn lại tát… ) thời gian trễ tùy chọn để hiển thị phù hợn với led
Bài làm Câu 3 và câu 4 giống nhau chỉ thay port2 -> port1
Hình vẽ:
Trang 4; -sang lan luot trai qua phai -
Trang 5SANGTRAI:
MOV A,#0FFH CLR C
MOV R0,#9 ;//////////so lan lap lai LAP:
MOV P2,A ; gan gia tri A=P2 CALL DELAY ; goi thoi gian tre RLC A ; xoay trai voi co C DJNZ R0,LAP ; lap lai 9 lan RET
; -sang lan luot phai qua trai -
SANGPHAI:
MOV A,#0FFH CLR C
MOV R1,#9 LAP1:
MOV P2,A CALL DELAY RRC A DJNZ R1,LAP1 RET
; -thoi gian tre -
DELAY:
MOV R7,#255
Trang 6KT2: MOV R6,#255
KT1: DJNZ R6,KT1
DJNZ R7,KT2 RET
END
Câu 5: Thiết kế mạch và viết chương trình hiển thị mạch có 8 LED được nối vào port P3 của vi điều khiển các LED sáng lần lượt từ LED giữa sang dần 2 bên(khoảng thời gian trễ tùy chọn để phù hợp với hiển thị)
Bài làm Hình vẽ
Code:
Trang 7DELAY:
MOV R7,#255 KT1:MOV R6,#255
KT2:DJNZ R6,KT2
DJNZ R7,KT1 RET
END
Trang 8Câu 6:Sử dụng Timer 0 hoặc Timer 1 viết chương trình tạo 2 xung trên 2 chân P1.0
và P1.1 với tần số lần lượt là 2KHz và 4KHz (Sử dụng osillocope để quan sát) Biết tần số thạch anh là 12MHz
Bài làm Hình vẽ:
Trang 9Code:
; CHU KY SONG VUONG LA: T = 1/f = 1/2 = 0,5ms = 500us
; khoang thoi gian cao( hoac thap) la: 0,5T =250us
; so nhip n = T/T(timer) = 250/1=250xung
Trang 10;khong thoi gian cao hoac thap la 0.5T= 125us
Trang 11MOV TH0,#0FFH SETB TR0 ; khoi dong bo dinh thoi timer0 JNB TF0,$ ;kiem tra bo dinh thoi
CLR TR0 CLR TF0 RET
END
Câu 7:Sử dụng Timer 0 hoặc/ và Timer 1 viết chương trình tạo 2 xung trên 2 chân P1.0 và P1.1 với tần số lần lượt là 2KHz và 500Hz (Sử dụng osillocope để quan sát) Biết tần số thạch anh là 12MHz
Bài làm Hình vẽ
Trang 14CALL TS2 CPL P1.0 CALL TS2 RET
XUNG2:
CPL P1.1 CALL TS3 CPL P1.1 CALL TS3 RET
; chu ky song vuong la:T= 1/f =1/2=0,5ms= 500us
;khoang thoi gian cao ( hoac thap) la: 0,5T= 250Us
Trang 15RET
;chu ky song vuong la: T=1/f= 1/0,5 =2ms = 2000us
;khoang thoi gian cao ( hoac thap)la: 0,5T=1000us
CLR TR0 CLR TF0 RET
END
Câu 8: Sử dụng Timer 0 hoặc/ và Timer 1 viết chương trình tạo 2 xung trên 2 chân P1.0 và P1.1 với tần số lần lượt là 10KHz và 1KHz (Sử dụng osillocope để quan sát) Biết tần số thạch anh là 12MH
Bài làm Với tần số là 10khz
Ta có chu kỳ song vuông là: T=1/f= 1/10=0,1ms = 100us
Khoảng thời gian cao ( hoặc thấp) là: 0,5T=50us
Số nhịp đếm cần trong khoảng thời gian đó là: n=50/T(timer)
Mà F(timer)=F(xtal)/12 = 12MHZ/12=1MHZ => T(timer)=1/1MHZ =1us
Trang 16 n=250 nhip vậy giá trị cần nạp vào thanh ghi TH0,TL0 là:
65536-50=65486xung = FFC3H
TH0= 0FFH , TL0=C3H
Với tần số là 1khz thì tương tự làm như trên ta có
TH0=0FEH, TL0=0CH
Viết chương trình giống như bài 6,7
Câu 9:Thiết kế mạch điều khiển và viết chương trìnhhiển thị Led 7 thanh sáng các
số từ 00 đến 99 Biết tần số thạch anh là 12MHz
Bài làm Hình vẽ:
CODE:
ORG 000H
Trang 17CLR P2.1 SETB P2.1
; -HIEN THI SO HANG DON VI -
MOV A,B MOVC A,@A+DPTR MOV P0,A
CLR P2.0 SETB P2.0
INC R1 CALL DELAY DJNZ R0,HIENTHI
Trang 18DJNZ R7,KT1 RET
; - TAO MA LED 7 THANH -
ORG 000H
MAIN:
MOV P2,#0FFH ;TAT LED 7 THANH
MOV R0,#100 ;SO LAN LAP
MOV R1,#99
Trang 19HIENTHI:
; -HIEN THI SO HANG CHUC -
MOV A,R1 MOV B,#10 DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P0,A
CLR P2.1 SETB P2.1
; -HIEN THI SO HANG DON VI -
MOV A,B MOVC A,@A+DPTR MOV P0,A
CLR P2.0 SETB P2.0
DEC R1 CALL DELAY DJNZ R0,HIENTHI JMP MAIN
; - TAO CTRINH TRE -
DELAY: MOV R7,#255
KT1: MOV R6,#255
Trang 20KT2: NOP
NOP NOP DJNZ R6,KT2
DJNZ R7,KT1 RET
; - TAO MA LED 7 THANH -
MALED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Câu 11:Thiết kế mạch điều khiển và viết chương trìnhhiển thị Led 7 thanh sáng các số từ lẻ từ 00 đến 99 (khoảng thời gian trễ tùy chọn để phù hợp với hiển thị) Biết tần số thạch anh là 12MHz
Bài làm Code:
ORG 000H
MAIN:
MOV P2,#0FFH ;TAT LED 7 THANH
MOV R0,#50 ;SO LAN LAP
MOV R1,#0
HIENTHI:
; -HIEN THI SO HANG CHUC -
INC R1 MOV A,R1 MOV B,#10 DIV AB
Trang 21MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P0,A
CLR P2.1 SETB P2.1
; -HIEN THI SO HANG DON VI -
MOV A,B MOVC A,@A+DPTR MOV P0,A
CLR P2.0 SETB P2.0
INC R1 CALL DELAY DJNZ R0,HIENTHI JMP MAIN
; - TAO CTRINH TRE -
DELAY: MOV R7,#255
KT1: MOV R6,#255
KT2: NOP
NOP NOP DJNZ R6,KT2
DJNZ R7,KT1
Trang 22Bài làm CODE:
ORG 000H
MAIN:
MOV P2,#0FFH ;TAT LED 7 THANH
MOV R0,#50 ;SO LAN LAP
MOV R1,#0
HIENTHI:
; -HIEN THI SO HANG CHUC -
MOV A,R1 MOV B,#10 DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P0,A
CLR P2.1 SETB P2.1
Trang 23; -HIEN THI SO HANG DON VI -
MOV A,B MOVC A,@A+DPTR MOV P0,A
CLR P2.0 SETB P2.0
INC R1 INC R1 CALL DELAY DJNZ R0,HIENTHI JMP MAIN
; - TAO CTRINH TRE -
DELAY: MOV R7,#255
KT1: MOV R6,#255
KT2: NOP
NOP NOP DJNZ R6,KT2
DJNZ R7,KT1 RET
; - TAO MA LED 7 THANH -
MALED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END
Trang 24Câu 13:Thiết kế mạch điều khiển và viết chương trìnhhiển thị Led 7 thanh sáng các số lẻ từ 99 về00 (khoảng thời gian trễ tùy chọn để phù hợp với hiển thị) Biết tần số thạch anh là 12MHz
Bài làm Code:
ORG 000H
MAIN:
MOV P2,#0FFH ;TAT LED 7 THANH
MOV R0,#50 ;SO LAN LAP
MOV R1,#100
HIENTHI:
; -HIEN THI SO HANG CHUC -
DEC R1 MOV A,R1 MOV B,#10 DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P0,A
CLR P2.1 SETB P2.1
; -HIEN THI SO HANG DON VI -
MOV A,B MOVC A,@A+DPTR MOV P0,A
Trang 25CLR P2.0 SETB P2.0
DEC R1 CALL DELAY DJNZ R0,HIENTHI JMP MAIN
; - TAO CTRINH TRE -
DELAY: MOV R7,#255
KT1: MOV R6,#255
KT2: NOP
NOP NOP DJNZ R6,KT2 DJNZ R7,KT1 RET
; - TAO MA LED 7 THANH -
MALED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Câu 14:14 Thiết kế mạch điều khiển và viết chương trình hiển thị Led 7 thanh sáng các số chẵn từ 99 về 00 (khoảng thời gian trễ tùy chọn để phù hợp với hiển thị) Biết tần số thạch anh là 12MHz
Bài làm Code:
ORG 000H
Trang 26CLR P2.1 SETB P2.1
; -HIEN THI SO HANG DON VI -
MOV A,B MOVC A,@A+DPTR MOV P0,A
CLR P2.0 SETB P2.0
DEC R1 CALL DELAY
Trang 27DJNZ R0,HIENTHI JMP MAIN
; - TAO CTRINH TRE -
DELAY: MOV R7,#255
KT1: MOV R6,#255
KT2: NOP NOP NOP DJNZ R6,KT2 DJNZ R7,KT1 RET
; - TAO MA LED 7 THANH -
MALED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Câu 15:Thiết kế mạch và viết chương trình điều khiển động cơ quay thuận trong 3 giây, dừng trong 5 giây và quay ngược trong 4 giây (dùng mạch cầu H) Biết giá trị nạp cho TH= và TL= để tạo ra được khoảng thời gian trễ là 1s Biết tần số thạch anh là 12MH
Bài làm Hình vẽ:
Trang 28Code:
ORG 00H
THUAN:
SETB P3.7 CLR P3.6 CALL DELAY3S NGUOC:
SETB P3.6 CLR P3.7 CALL DELAY5S
Trang 29DUNG:
SETB P3.6 SETB P3.7 CALL DELAY4S JMP THUAN
DELAY1S:
MOV R0,#20 LAP:
MOV TMOD,#01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0
JNB TF0,$
CLR TR0 CLR TF0 DJNZ R0,LAP RET
DELAY3S:
MOV R1,#3 LAP1:
CALL DELAY1S DJNZ R1,LAP1
Trang 30RET DELAY4S:
MOV R2,#4 LAP2:
CALL DELAY1S DJNZ R2,LAP2 RET
DELAY5S:
MOV R3,#5 LAP3:
CALL DELAY1S DJNZ R3,LAP3 RET
END
Câu 16:Thiết kế mạch và viết chương trình điều khiển động cơ quay thuận trong 3 giây, dừng trong 5 giây và quay ngược trong 4 giây Biết giá trị nạp cho TH= và TL= để tạo ra được khoảng thời gian trễ là 1s Biết tần số thạch anh là 12MHz Tương tự câu trên câu 15
DẠNG 2:
Câu 1:Lập trình hiển thị số 0 lên LED 7 thanh, khi nào bấm nút START (một lần) sẽ bắt đầu đếm từ 00 đến 99 mỗi lần tăng số, trễ khoảng 200ms
Bài làm Hình vẽ:
Trang 32MOV A,R0 MOV B,#10 DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P2,A
CLR P3.2 SETB P3.2
MOV A,B MOVC A,@A+DPTR MOV P2,A
CLR P3.3 SETB P3.3 CALL DELAY DJNZ R1,HIENTHI
JMP HERE
; -CHUONG TRINH TAO TRE 200MS DELAY:
MOV R7,#4 CLR TF0 MOV TMOD,#01H LAP:SETB TR0
Trang 33MOV TH0,#3CH MOV TL0,#0B0H JNB TF0,$
CLR TR0 CLR TF0 DJNZ R7,LAP RET
Trang 35DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P2,A
CLR P3.2 SETB P3.2
MOV A,B MOVC A,@A+DPTR MOV P2,A
CLR P3.3 SETB P3.3 CALL DELAY JNB P0.0,DUNG DJNZ R1,HIENTHI JMP MAIN
DUNG:
JMP DUNG
DELAY:
CLR TF0 MOV TMOD,#01H MOV R7,#4
LAP:
MOV TH0,#3CH
Trang 36MOV TL0,#0B0H SETB TR0
JNB TF0,$
CLR TF0 CLR TR0 DJNZ R7,LAP RET
MALED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Câu 3:Lập trình điều khiển 8 LED đơn, tại một thời điểm có nhiều nhất 1 LED sáng Mỗi lần bấm phím UP, thì LED sáng dịch sang trái một điểm, bấm phím DOWN thì LED dịch sang phải một điểm, bấm phím START thì LED luôn dịch sang trái, bấm phím STOP thì LED luôn
Bài làm Hình vẽ:
Trang 38JNB P0.2,UP JNB P0.4,DOWN JNB P0.7,STOP JMP START1 START2:
MOV P1,A CALL DELAY RLC A JMP START1
UP: CJNE A,#0,UP1
SETB C
MOV A,#0
UP1:
MOV P1,A RLC A CALL DELAY JMP MAIN
Trang 39DOWN:CJNE A,#0,DOWN1
SETB C MOV A,#0 DOWN1:
MOV P1,A RRC A CALL DELAY JMP MAIN STOP:CJNE A,#0,STOP1
SETB C
MOV A,#0
STOP2:
MOV P1,A CALL DELAY RRC A JNB P0.0,START JNB P0.2,UP JNB P0.4,DOWN JMP STOP2 STOP1:
MOV P1,A CALL DELAY RRC A JMP STOP2
Trang 40; -THOI GIAN TRE -
END
Câu 4:Viết chương trình quay số Khi bấm nút Start, Led 7 thanh bắt đầu liên tục hiển thị tăng dần các số từ 00 đến 99 mỗi lần tăng cách nhau 50ms Khi nút Stop bấm thì dừng tăng và hiển thị giá trị hiện tại sau đó nhấp nháy số đó trong 3 giây với chu kỳ 500 ms Lặp lại nếu nút Start được bấm tiếp
Bài làm:
Hình vẽ:
Trang 42INC R0 MOV A,R0 MOV B,#10 DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P2,A
CLR P3.2 SETB P3.2
MOV A,B MOVC A,@A+DPTR MOV P2,A
CLR P3.3 SETB P3.3 CALL DELAY JNB P0.7,STOP DJNZ R1,START JMP BAMNUT STOP:
MOV R4,#6 NHAY:
CPL P3.4 CPL P3.5
Trang 43CALL DELAY500 DJNZ R4,NHAY JMP MAIN
JNB TF0,$
CLR TR0 CLR TF0 RET
; -tao tre 500ms thi cho nap lai delay 10 lan -
DELAY500:
MOV R3,#10 LAP:
MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0
JNB TF0,$
Trang 44CLR TR0 CLR TF0 DJNZ R3,LAP RET
; -nhap ma led7 thanh -
MALED7: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
END
Câu 5: Lập trình đóng ngắt relay để nhấp nháy LED D1 theo chu kỳ 100ms < T < 2000ms Khi bấm nút Up thì tăng T = T + 100ms, bấm nút Down thì giảm T = T – 100ms
Câu 6:Lập trình điều khiển động cơ, mỗi lần bấm phím sẽ thay đổi tốc độ, chiều quay của động cơ theo bảng sau
STT Phím được bấm Tốc độ động cơ Chiều quay
1 START Cho phép các phím hoạt động (có thể bấm được)
4 STOP Cấm các phím hoạt động (trừ START)
Bài làm Hình vẽ:
Trang 45CODE:
ORG 00H
MAIN:
MOV P2,#0FFH MOV 30H,#0 JNB P0.0,CHOPHEP SJMP MAIN
CHOPHEP:
JNB P0.2,TANG JNB P0.4,GIAM
Trang 46JNB P0.7,DUNG SJMP CHOPHEP TANG:
INC 30H MOV A,30H CJNE A,#100,NEXT MOV A,#0
MOV 30H,A NEXT:
CALL HIENTHI JMP CHOPHEP GIAM:
DEC 30H MOV A,30H CJNE A,#255,NEXT1 MOV A,#99
MOV 30H,A NEXT1:
CALL HIENTHI JMP CHOPHEP DUNG:
JNB P0.0,CHOPHEP JMP DUNG
HIENTHI:
Trang 47MOV B,#10 DIV AB MOV DPTR,#MALED7 MOVC A,@A+DPTR MOV P2,A
CLR P3.2 SETB P3.2
MOV A,B MOVC A,@A+DPTR MOV P2,A
CLR P3.3 SETB P3.3 CALL DELAY RET
DELAY:
MOV R7,#5 LAP:
MOV TMOD,#01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) SETB TR0
JNB TF0,$
CLR TR0
Trang 48CLR TF0 DJNZ R7,LAP
Code:
Trang 49JMP $ ISR_T0:
CPL P1.5 MOV TH0,#62H MOV TL0,#0C6H RETI
END
Câu 14: Lập trình điều khiển timer tạo đồng hồ đếm giây, hiển thị lên LED 7 thanh
Bài làm:
Hình:
Trang 51MOV TMOD,#01H MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) MOV R7,#20
SETB TR0 JMP $ ISR_T0:
MOV TH0,#HIGH(-50000) MOV TL0,#LOW(-50000) DJNZ R7,THOAT
MOV R7,#20 MOV A,R0 CJNE A,#60,NEXT MOV A,#0
MOV R0,A NEXT:
CALL HIENTHI INC R0
THOAT:
RETI HIENTHI:
MOV B,#10 DIV AB MOV DPTR,#MALED7
Trang 52MOVC A,@A+DPTR MOV P2,A
CLR P3.2 SETB P3.2
MOV A,B MOVC A,@A+DPTR MOV P2,A
CLR P3.3 SETB P3.3 RET
MALED7:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END