Trả lời các câu hỏi a.. Trả lời các câu hỏi a.. - Số lần xảy ra ngắt để quét xong 1 LED và chuyển qua 1 LED khác là 1 lần ngắt.. Trả lời các câu hỏi a.. Mô tả cách cấu hình UART - Ta
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC BÁCH KHOA
Trang 21 Trả lời các câu hỏi
a Với chế độ Normal mode, mỗi khi vào ngắt OverFlow ta có phải khởi động lại thanh ghi đếm hay không?
- Với chế độ Normal mode, mỗi khi vào ngắt OverFlow ta cần phải khởi động lại thanh ghi đếm
b Giải thích các giá trị ghi vào các thanh ghi cấu hình timer và prescaler
- Ta cần tạo ra sóng vuông tần số 1 kHz, tức là nửa chu kì mức cao và nửa chu
kì mức thấp lần lượt duy trì trong 0.5ms
- Chọn mode NOR, bằng cách nạp giá trị 0 vào thành ghi TCCR1A
- Chọn hệ số chia N= 8, bằng cách ghi giá trị 0x02 vào thanh ghi TCCR1B
Tdelay 510−4
- Tính hệ số nạp vào thanh ghi TCNT1, n =
Tosc N = 1
8106 8 = 500 → giá trị nạp là -500
2 Mã nguồn chương trình với chú thích
Trang 3BÀI 2
• Kết quả thí nghiệm:
1 Trả lời các câu hỏi
a Với chế độ CTC mode, mỗi khi vào ngắt COMPARE_MATCH ta có phải khởi động lại thanh ghi đếm hay không?
- Với chế độ CTC mode, mỗi khi vào ngắt COMPARE_MATCH ta không cần phải khởi động lại thanh ghi đếm
START:
RJMP START TIMER1_OVF_ISR:
Trang 4RJMP START TIMER1_COMPA_ISR:
b Điểm tiện lợi của chế độ này so với cách cấu hình ở bài 1 là như thế nào?
- Ta có thể giảm thiểu được số câu lệnh sử dụng, giảm thiểu được sai số dùng
để tạo xung vuông trong chương trình ngắt
c Giải thích các giá trị ghi vào các thanh ghi cấu hình timer và prescaler
- Ta cần tạo ra sóng vuông tần số 100 Hz, tức là nửa chu kì mức cao và nửa chu
kì mức thấp lần lượt duy trì trong 5ms
- Chọn mode CTC cho Timer 1 và hệ số chia N=8 bằng cách nạp giá trị 0 vào thanh ghi TCCR1A và giá trị 0x10 vào thanh ghi TCCR1B
Tdelay 510−3
- Tính hệ số nạp vào thanh ghi TCNT1, n =
Tosc N = 1
8106 8 = 5000 → giá trị nạp là n-1= 4999
2 Mã nguồn và chú thích
Trang 5RJMP START TIMER1_COMPA_ISR:
Trang 6BÀI 3
• Kết quả thí nghiệm:
1 Trả lời các câu hỏi
a Để đạt được tần số quét 50Hz thì 1 LED sẽ sáng trong bao lâu?
- Để đạt được tần số quét 50Hz thì 1 LED sáng trong 0.02 giây
b Khi đó, chân PC0 (đảo mỗi khi chuyển LED) sẽ có tần số là bao nhiêu?
- Khi đó, chân PC0 sẽ có tần số đúng bằng 50Hz
c Số lần xảy ra ngắt cần thiết để chuyển LED là bao nhiêu?
- Số lần xảy ra ngắt để quét xong 1 LED và chuyển qua 1 LED khác là 1 lần ngắt Vậy cần 4 lần ngắt để quét xong hết 4 LED
RETI
Trang 7.EQU OUTPORT= PORTA
CBI PORTB,4 ; KHOA CHOT U4
CBI PORTB,5 ; KHOA CHOT U5
;
SBI DDRC,0
CBI PORTC,0
CLR R19
; PC0: TAN SO CUA 1 LED
; dem du 5 lan dao
LDI R17,HIGH(7999) ; NAP OCR1A
LDI R17,4
CLR R18 LOOP:
LDI R16,$FF
OUT OUTPORT,R16
SBI PORTB,5
NOPCBI PORTB,5
LDI R20,(1<<OCIE1A) ; CHO PHEP NGAT TIMER1_COMPA
STS TIMSK1,R20
CPI R19,5
BRNE TT
DEC R17 ; XUAT LED TIEP THEO
INC R18 ; CHUYEN MA LED SANG
DISPLAY_7SEG:
PUSH R17
2 Mã nguồn và chú thích
Trang 8OUT OUTPORT,R18 ; XUAT MA LED SANG
SBI PORTB,5
NOPCBI PORTB,5
.DB 0XC6, 0XA1, 0X86, 0X8E TAB_7SEG_CONTROL: DB 0b00001110, 0b00001101, 0b00001011, 0b00000111
; TIMER1_COMPA_ISR:
; dem du 5 lan thi dao
; CAM NGAT TIMER1_COMPA_ISR
CBR R20,(1<<OCIE1A)
STS TIMSK1,R20 NO_CHANGE:
RETI
BÀI 4
Trang 91 Trả lời các câu hỏi
a Mô tả các kết nối trên kit
- Kết nối tín hiệu UART với máy tính Tx → PD1, Rx→ PD0
- Port A của VĐK nối với LCD
- Port B nối với J34, NLE0→ PC0, NLE1→PC1
b Mô tả cách cấu hình UART
- Ta dùng USART0 để nhận kí tự được gửi xuống kit từ Hercules, nối chân RX trên RS232 vào chân RXD0 trên kit thí nghiệm, nối các chân PORT để hiển thị LCD và quét LED như trong chương trình
c Chuyển đổi số đếm thành số BCD để ghi vào bộ đệm hiển thị LED như thế nào?
- Ta viết 1 chương trình con chia số đếm (lưu trong 16 bit của 2 thanh ghi) cho
10, lần lượt thu được số BCD của hàng đơn vị, hàng chục, hàng trăm, hàng nghìn, sau đó lưu vào bộ nhớ Khi tiến hành quét LED, ta tiến hành lấy lại 4
số BCD này, thực hiện chuyển các số BCD thành mã 7 đoạn bằng 1 chương trình con khác, sau đó tiến hành quét LED
2 Mã nguồn và chú thích
.DEF FLAG = R23 ; CO LENH BAO HIEU DA NGAT
.DEF DATA_REC = R22 ; R20 CHUA KI TU NHAN DUOC (ASCII)
; DEM SO LAN NHAN KI TU DUOC LUU O R25:R24
.EQU LCD = PORTA ; PORTA HIEN THI LCD
.EQU LCD_DR = DDRA
.EQU LED = PORTB
.EQU LED_DR = DDRB
.EQU RS = 0 ; BIT RS PA0
.EQU RW = 1 ; BIT RW PA1
.EQU E = 2 ; BIT E PA2
.EQU DATA = 0X200 ; LUU DATA VUA NHAN DUOC VAO FLASH DE TRUY XUAT RA LCD
.EQU SR_ADR = 0X100 ; LUU SO DEM VAO SRAM DE TRUY XUAT RA LED
.ORG 0
RJMP START
.ORG 0X28
RJMP USART0_RX ; NGAT LUC NHAN KI TU XONG
.ORG 0X40 ; DUA CHUONG TRINH CHINH THOAT RA KHOI VUNG INTERRUPTS
OUT DDRC, R16 ; PORTC LA PORT XUAT TIN HIEU LE01
CBI PORTC, 0 ; KHOA NGO RA U2
Trang 10CBI PORTC, 1 ; KHOA NGO RA U3
RCALL DELAY_US ; CTC DELAY 100US X R16 = 25MS
CBI LCD, RS ; RS = 0 GHI LENH
LDI R17, 0X30 ; MA LENH 30 LAN 1
RCALL OUT_LCD4
LDI R16, 42
RCALL DELAY_US ; DELAY 4,2MS
CBI LCD, RS ; RS = 0 GHI LENH
LDI R17, 0X30 ; MA LENH 30 LAN 2
RCALL OUT_LCD4
LDI R16, 2
RCALL DELAY_US ; DELAY 200US
CBI LCD, RS ; RS = 0 GHI LENH
LDI R17, 0X30 ; MA LENH 30 LAN 3
RCALL OUT_LCD4
LDI R16, 2
RCALL DELAY_US ; DELAY 200US
CBI LCD, RS ; RS = 0 GHI LENH
LDI R17, 0X20 ; MA LENH 20
RCALL OUT_LCD4
LDI R18, 0X28 ; FUNCTION SET 2 DONG FONT 5X8 MODE 4 BIT
LDI R19, 0X01 ; CLEAR DISPLAY
LDI R20, 0X0C ; DISPLAY ON, CON TRO OFF
LDI R21, 0X06 ; ENTRY MODE SET DICH PHAI CON TRO, DDRAM TANG 1 DIA CHI
RCALL INIT_LCD4 ; CTC KHOI DONG LCD 4 BIT
LDI R16, 0X30
LDI XH, HIGH(DATA)
LDI XL, LOW(DATA)
ST X, R16 ; BAN DAU USART CHUA NHAN GIA TRI, CHO = 0 (0X30 TRONG MA ASCII)
SEI ; CHO PHEP NGAT TOAN CUC
RCALL USART_INIT ; KHOI DONG USART
CBI LCD, RS ; RS = 0 GHI LENH
LDI R17, 0X01 ; XOA MAN HINH
LDI R17, 0X80 ; CON TRO BAT DAU O VI TRI 1 DONG 1
RCALL CURS_POS ; DAT CON TRO RA LCD
Trang 11ST X, DATA_REC ; LUU KI TU VUA NHAN DUOC VAO SRAM
ADIW R24, 1 ; TANG SO DEM LEN 1
CPI R24, 232 ; NEU SO DEM = 1000 THI RESET LAI VE 0
; INIT LCD4 KHOI DONG LCD GHI 4 BYTE MA LENH THEO GIAO TIEP 4 BIT
; FUNCTION SET R18 = 0X28 2 DONG FONT 5X8 GIAO TIEP 4 BIT
; CLEAR DISPLAY R19 = 0X01 XOA MAN HINH
; DISPLAY ON/OFF CONTROL R20 = 0X0C MAN HINH ON, CON TRO OFF
; RENTRY MODE SET R21 = 0X06 DICH PHAI CON TRO , DC DDRAM TANG LEN 1 DVI
Trang 12; -
; OUT LCD4 GHI MA LENH/ DATA RA LCD
; INPUT R17 CHUA MA LENH/ DATA 4 BIT CAO
; OUT_LCD GHI 1 BYTE MA LENH/DATA RA LCD
; CHIA LAM 2 LAN GHI 4 BIT
; INPUT R17 CHUA MA LENH/DATA
; BIN16_BCD CHUYEN SO NHI PHAN 16 BIT SANG SO BCD 4 DIGIT
; INPUT R25:R24 = SO NHI PHAN 16 BIT
; OUTPUT R21, R20 = BCD NEN, R21 TRONG SO CAO
; SU DUNG CTC DIV16_8 , 10 = SO CHIA
BIN16_BCD: CLR R20
CLR R21
RCALL DIV16_8
MOV R20, R16 ; R20 = DU : BCD DON VI
Trang 13; DIV16_8 CHIA 2 SO NHI PHAN 16 BIT CHO 8 BIT
; INPUT R25:R24 LA SO BI CHIA, SO CHIA = 10
; OUTPUT R25:R24 = THUONG SO, R16 LA DU SO
; SD R28:R29 DE CAT THUONG SO TAM
; BCD_UNP TACH SO BCD NEN THANH KHONG NEN
; INPUT R20 = SO BCD NEN CHUC - DON VI
; R21 = SO BCD NEN NGAN - TRAM
; OUTPUT CAT VAO 4 O NHO DAU SRAM
BCD_UNP:
LDI XH, HIGH(SR_ADR)
LDI XL, LOW(SR_ADR)
MOV R17, R20 ; LAY BCD NEN TRONG SO THAP
ANDI R17, 0X0F ; LAY BCD DON VI
MOV R17, R21 ; LAY BCD NEN TRONG SO CAO
ANDI R17, 0X0F ; LAY BCD TRAM
RCALL BCD_UNP
LDI R18, 4 ; SO LAN QUET LED
LDI R19, 0XFE ; 1111 1110 LED 0 BAT DAU
Trang 14OUT LED, R17 ; XUAT MA 7 DOAN
SBI PORTC, 0 ; MO U2
CBI PORTC, 0 ; KHOA U2
OUT LED, R19 ; XUAT MA QUET LED O U3
SBI PORTC, 1 ; MO U3
CBI PORTC, 1 ; KHOA U3
LDI R16, 20
RCALL DELAY_US
SEC ; C = 1 CHUAN BI QUAY TRAI
ROL R19 ; MA QUET LED KE TIEP
DEC R18
BRNE LOOP ; QUAY LAI LOOP KHI CHUA QUET DU 4 LAN
RET
Trang 151 Trả lời các câu hỏi
a Mô tả kết nối trên kit
b Để xảy ra ngắt 1 s 1 lần thì ngắt ngoài cấu hình như thế nào?
c Hiện tượng gì sẽ xảy ra nếu ta cấu hình ngắt ngoài tích cực theo mức thấp?
Trang 16BÀI 6
2 Mã nguồn chương trình với chú thích
1 Trả lời các câu hỏi
a Mô tả kết nối trên kit
- Kết nối PORTD với LED ma trận
- PB0→ Chân DATA, PB1→ LATCH, PB2→ CLK, PB3→ CLR
b Để có tần số quét 25Hz thì một cột LED sáng trong bao lâu?
- Để có tần số quét 25Hz thì một cột LED sáng trong 1/25Hz = 0,04s
c Sự khác nhau khi quét ở tần số 25Hz và 125Hz
- Ở tần số quét 25Hz thì một cột LED sáng trong 1/25Hz = 0,04s
- Ở tần số quét 125Hz thì một cột LED sáng trong 1/125Hz = 8ms
➔ Như vậy, ở 125Hz LED sẽ được quét nhanh hơn, ít bị chập chờn vì tần số cao
ở 25Hz mắt người sẽ nhìn thấy LED chớp tắt mà không phải cảm giác sáng liên tục như ở 125Hz
2 Mã nguồn chương trình với chú thích
.equ clearSignalPort = PORTB ; Set clear signal port to PORTB
.equ clearSignalPin = 3 ; Set clear signal pin to pin 3 of PORTB
.equ shiftClockPort = PORTB ; Set shift clock port to PORTB
.equ shiftClockPin = 2 ; Set shift clock pin to pin 2 of PORTB
.equ latchPort = PORTB ; Set latch port to PORTB
.equ latchPin = 1 ; Set latch pin to pin 1 of PORTB
.equ shiftDataPort = PORTB ; Set shift data port to PORTB
.equ shiftDataPin = 0 ; Set shift data pin to pin 0 of PORTB
Trang 17clr_tgdich:
cbi clearSignalPort, clearSignalPin ;clr thanh ghi dich
sbi clearSignalPort, clearSignalPin ;
Trang 18pop r16 ; Restore the temporary register
ret ; Return from the function
shift_data:
push r18
cbi shiftClockPort, shiftClockPin
ldi r18, 8 ;dich 8 bit
shiftloop:
sbrc r27, 7 ; check MSB bit 0 bo qua
sbi shiftDataPort, shiftDataPin ; data=1
sbi shiftClockPort, shiftClockPin ; clk high
lsl r27 ; dich trai data
cbi shiftClockPort, shiftClockPin ; clk low
cbi shiftDataPort, shiftDataPin ; data = 0
dec r18
brne shiftloop
sbi latchPort, latchPin ; mo chot
cbi latchPort, latchPin ; dong chot
Trang 19.equ clearSignalPort = PORTB ; Set clear signal port to PORTB
.equ clearSignalPin = 3 ; Set clear signal pin to pin 3 of PORTB
.equ shiftClockPort = PORTB ; Set shift clock port to PORTB
.equ shiftClockPin = 2 ; Set shift clock pin to pin 2 of PORTB
.equ latchPort = PORTB ; Set latch port to PORTB
.equ latchPin = 1 ; Set latch pin to pin 1 of PORTB
.equ shiftDataPort = PORTB ; Set shift data port to PORTB
.equ shiftDataPin = 0 ; Set shift data pin to pin 0 of PORTB
cbi clearSignalPort, clearSignalPin ;clr thanh ghi dich
sbi clearSignalPort, clearSignalPin ;
Trang 20ldi r16, high($FA01) ; Chon N=1, n=64001 => T xap xi 8ms (125hz)
pop r16 ; Restore the temporary register
ret ; Return from the function
shift_data:
push r18
cbi shiftClockPort, shiftClockPin
ldi r18, 8 ;dich 8 bit
shiftloop:
sbrc r27, 7 ; check MSB bit 0 bo qua
sbi shiftDataPort, shiftDataPin ; data=1
sbi shiftClockPort, shiftClockPin ; clk high
lsl r27 ; dich trai data
cbi shiftClockPort, shiftClockPin ; clk low
Trang 21BÀI 1
cbi shiftDataPort, shiftDataPin ; data = 0
dec r18
brne shiftloop
sbi latchPort, latchPin ; mo chot
cbi latchPort, latchPin ; dong chot
- Logo Trường ĐH Bách Khoa:
https://drive.google.com/file/d/1yGNhL1Euobl_8gGA- vM5DTZiCZYjifeT/view?usp=sharing
LAB 4-2: GIAO TIẾP I/O VÀ CÁC LỆNH TÍNH TOÁN
1 Trả lời các câu hỏi:
a Mô tả cách kết nối trên kit
- Kết nối động cơ vào KIT
- Chân PA0 và PA1 nối với SWITCH 0 và 1:
- Chân PA 3 và PA4 nối với DIPSWITCH 0 và 1
- Chân PB0 nối với MOTOR_CTRL1
- Chân PB1 nối với MOTOR_CTRL2
- Chân PD6 nối với chân MOTOR_ENABLE
b Chụp ảnh dạng xung của 2 kênh encoder trong trường hợp quay thuận và quay nghịch
2 Mã nguồn chương trình với chú thích:
.DEF FLAG_REG = R18
.EQU SW_FLG = 0
.EQU CONT_IN = PINA
.EQU CONT_ROTDC = PORTB ; DIEU KHIEN CHIEU QUAY DONG CO
Trang 22.EQU SW2 = 1 ; BUTTON DOWN SPEED
.EQU SW3 = 2 ; SWITCH SET UP CHIEU QUAY DONG CO
.EQU SW4 = 3 ; SWITCH DUNG DONG CO
.EQU PMIN = 5 ; DUTY CYCLE = 5% LA MIN
.EQU PMAX = 118 ; DUTY CYCLE = 95% LA MAX
.EQU DELTA = 6 ; THAY DOI (NHANH/CHAM) 5% DUTY CYCLE
OUT DDRD, R16; NGO RA DIEU KHIEN TOC DO DONG CO
LDI R16, (1 << MOTOR_CTRL1)|(1 << MOTOR_CTRL2)
OUT CONT_ROTDC_DDR, R16 ; NGO RA DIEU KHIEN CHIEU QUAY DONG CO
LDI R16, 0 ; PORTA LA INPUT CONTROL UP/DOWN SPEED AND ROTATION OF MORTOR DC
;DONG CO QUAY CHIEU THUAN
SBI CONT_ROTDC, MOTOR_CTRL1
CBI CONT_ROTDC, MOTOR_CTRL2
RJMP CONTINUE
REVERSE:
CBI CONT_ROTDC, MOTOR_CTRL1
SBI CONT_ROTDC, MOTOR_CTRL2
SBI PORTD, MOTOR_ENABLE
CBI CONT_ROTDC, MOTOR_CTRL1
CBI CONT_ROTDC, MOTOR_CTRL2
BRNE SW2_CHK ; KIEM TRA SW2
LDS R17, OCR2B ; DOC OCR2B
ADD R17, R19 ; R17 = R17 + DELTA
Trang 23CPI R17, PMAX ; DO RONG XUNG VUOT PMAX?
BRCS UP_SP ; CHUA -> CAP NHAT GIA TRI MOI
LDI R17, PMAX ; GIOI HAN GIA TRI = PMAX
CPI R17, PMIN ; DO RONG XUNG DUOI PMIN?
BRCC DWN_SP ; CHUA -> CAP NHAT GIA TRI MOI
LDI R17, PMIN ; GIOI GIAN GIA TRI = PMIN
DWN_SP:
STS OCR2B, R17 ; CAP NHAT OCR2B
RJMP START
; -
;GET_SW DOC TRANG THAI SW1,SW2 CO CHONG RUNG
;TRA VE MA SW1 = 1 HOAC MA SW2 = 2 VA CO SW_FLG = 1 NEU CO SW NHAN
;TRA VE VO SW_FLG = 0 NEU KHONG CO SW NHAN
;SU DUNG R16, R17, CO SW_FLG THUOC THANH GHI FLAG_REG
POP R17 ; PHUC HOI MA SW
CPI R17, (1 << SW2) ; SW1 = 0 NHAN, SW2 = 1 KHONG NHAN
BRNE SW2_CODE ; KHONG PHAI KIEM TRA MA SW2
LDI R17, 1
RJMP SET_FLG ; BAO CO NHAN SW
SW2_CODE:
CPI R17, (1 << SW1) ; SW2 = 0 NHAN, SW1 = 1 KHONG NHAN
BRNE EXIT_SW ; KHONG PHAI -> THOAT
Trang 24https://drive.google.com/file/d/1tZkAmxPYcpSFMxyP1knIhSHuvb1vOBm3/view?usp=sharing