Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển Thực hành vi xử lý vi điều khiển
ĐẠI HỌC QUỐC GIA TP.HCM TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC VÀ KỸ THUẬT MÁY TÍNH THÍ NGHIỆM VI XỬ LÝ - VI ĐIỀU KHIỂN BM Kỹ thuật Máy tính 2012 Trường ĐH Bách Khoa TP.HCM Bài : Khoa KH & KTMT Giới thiệu MPLAB IDE KIT PIC Nội dung: a.Tạo project MPLAB IDE.Viết chương trình ASM Dịch nạp chương trình vào vi điều khiển PIC Chạy gỡ rối chương trình b.Đọc nhớ chương trình.ghi đọc bô nhớ EEPROM xuất LED 1.1 Phần cứng thí nghiệm ICD2 PICDEM PLUS Bộ hỗ trợ lập trình dùng với máy tính ICD2 (In-Circuit Debugger) Cổng nối tiếp ICD2 USB Nối với card PICDEM Nối với máy tính Sơ đồ kết nối ICD2 Kit thí nghiệm PICDEM Plus có đặc điểm hình sau : Đế cắm DIP 18, 28 40 chân (có thể cắm linh kiện dùng lần) Ổn áp +5V dùng cho nguồn 9V, 100 mA AC/DC hay pin 9V Đầu cắm DB-9 theo chuẩn giao tiếp RS-232 Đầu cắm qua lập trình In-Circuit Debugger (ICD) Biến trở 5KΩ dùng cho tín hiệu nhập tương tự Ba nút nhấn dùng tạo tín hiệu kích từ bên reset LED nguồn Bốn LED thị cho PORTB Jumper J6 để ngắt LED thị RB0 (khi nhập tín hiệu từ nút nhấn RB0) Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 10 Bộ dao động (OSC) MHz 11 Nơi để lắp thêm thạch anh dao động cần 12 Thạch anh dao động 32.768 kHz tạo xung clock cho Timer1 13 Jumper J7 để ngắt dao động RC có sẳn (khoảng MHz) 14 EEPROM nối tiếp 32K x bit 15 Màn hình LCD 16 Kèn Piezo 17 Vùng lắp thêm linh kiện 18 Cảm biến nhiệt TC74 1.2 Môi trường phát triển MPLAB Bước Chạy phần mềm MPLAB: Start_|All Programs_|Microchip_|MPLAB IDE v8.00_|MPLAB IDE Bước Chọn Menu : Project_|Project Wirazd… Chọn Next cửa sổ Welcome Bước Chọn số hiệu PIC cần sử dụng (PIC18F4520) bấm Next: Bước Chọn tool Microchip MPASM Toolsuite ô Active Toolsuite Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Chọn MPASM Assembler (mpasmwin.exe) ô Tollsuite Contents Click Next qua cửa sổ kế Bước Nhấn Browse… để chọn thư mục đánh tên project Chọn thư viện thông qua file INC LKR thêm vào project Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT C:\Program Files\Microchip\MPASM Suite\LKR\18f4520.lkr C:\Program Files\Microchip\MPASM Suite\P18F4520.INC Click Next thấy sau : Click Finish Ta project hình sau: Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bước Thêm file vào dự án theo bước sau : Một project đơn giản phải gồm có thành phần Source files Hearder Files Thư mục Source files chứa file text *.asm file *.c chứa code lập trình Thư mục Hearder Files chứa file *.h *.INC: file có sẵn microchip Nếu bạn quên không thêm file cần có vào làm theo hướng dẫn sau : ADD header file: ( Copy header file vào thư mục chứa project để tiện cho việc sử dụng sau này) cửa sổ lựa chọn Chọn header file phù hợp với PIC chọn Open ADD source file: Click chọn New toolbar: Cửa sổ lên sau: Từ Menu bar chọn File_|Save để lưu Thực Save, đặt tên với đuôi asm vào thư mục chứa dự án Nhấp phải vào Source Files chọn Add file >>> chọn file vừa tạo xong Chúng ta hoàn tất việc thêm file vào thư mục Source files Header files Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Công việc viết code (trong cửa sổ text editor source file) Ðối với project lớn dùng nhiều source file header file, ta làm lại trình thêm file vào dự án nhiều lần 1.3 Nạp file hex vào vi điều khiển PIC Sau tạo project, ta tiến hành build để tạo *.hex Có thể mô tả công việc sau: Ví dụ, ta có chương trình cho PIC sau: list #include code goto p=18f4520 p18f4520.inc start ;vung dinh nghia du lieu udata ;vung dinh nghia cac chuong trinh PRG code start call init ;chuong trinh chinh main btfsc PORTA,RA4 ;cho nhan nut RA4 bra main bsf LATB,RB0 ;Bat LED RB0 swoff btfss PORTA,RA4 ;cho nhan nut RA4 bra swoff bcf LATB,RB0 ;tat LED RB0 bra main ;Lap lai cong viec ;chuong trinh khoi dong ban dau init bcf TRISB,RB0 ;khoi dong RB0 la cong xuat bsf TRISA,RA4 ;khoi dong RA4 la cong nhap return end Bây lưu chương trình vừa viết thành BaiTN1.asm vào thư mục tạo project phía Để compile chương trình ta vào menu Project_|Build All hình bên Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Nếu việc build thất bại, việc không mong muốn, ta có thấy kết hình sau: Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Nếu thành công, ta thấy hình sau: Nếu việc build thành công, chương trình dịch BaiTN1.asm thành BaiTN1.hex thư mục chương trình BaiTN1.asm Sau có file hex, công việc làm để nạp file Hex xuống board Đầu tiên, chọn mạch nạp cách vào menu Programmer_|Select Programmer_|Mplab ICD2 hình sau : Sau chọn Mplab ICD2 xong ta thấy giao diện sau: Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Một thao tác cần làm giúp ta dịch chương trình, nạp chạy tự động vào menu Programmer_|Settings…_|Program chọn mục Automatically hình sau : Bây ta dịch, nạp chạy dự án với thao tác menu Project_|Build All (hoặc nhấn Ctrl-F10) Nếu thành công chương trình dịch, nạp card PICDEM chạy Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Để khởi tạo module ADC ta cần quan tâm chủ yếu tới ghi ADCCON1, ADCCON0, ADCON2 Như chương trình khởi tạo ta thấy phải cấu hình cho pin tương ứng phải chân AN0, mặc định chân có chức Input/Output digital Sau ta phải chọn kênh ADC tương ứng, ta sử dụng kênh AD0 Và điểm quan trọng bit GO ghi ADCON0, bít bật lên module AD bắt đầu chuyển đổi tín hiệu Bước Tiếp theo hàm đọc giá trị ADC: Update_adc bsf btfsc bra movf return ADCON0,GO ;start conversion ADCON0,GO $-2 ADRESH,W Sau chuyển đổi tín hiệu A-D, giá trị số lưu vào ghi ADRESH Đến tùy vào ứng dụng cụ thể mà ta biến đổi giá trị tùy theo yêu cầu mà ta mong muốn ADCON - ADON = 1:ADC is powered up 0:ADC is shut off to save power Set to begin conversion GO_DONE Automatically cleared to signal when conversion has been completed 000 001 010 011 100 101 110 111 Select AN0 (RA0) Select AN1 (RA1) Select AN2 (RA2) Select AN3 (RA3) Select AN4 (RA4) Select AN5 (RA5) Select AN6 (RA6) Select AN7 (RA7) ADCS1, ADCS0 (See Figure 10-9) Bộ môn Kỹ Thuật Máy Tính 78 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM PIC18F452 Khoa KH & KTMT PORTE Power to I/O circuitry for individual pins controlled by ADCON1 selection (Power turned off at reset) PORTA 100 80 East 60 RE2/AN7 RE1 RE1/AN6 RE0 RE0/AN5 RE5 RE5/AN4 RE4 RA4 RE3 RA3/AN3/VREF+ RE2 RA2/AN2/VREF - RE1 RA1/AN1 RE0 RA0/AN0 West 40 20 RE2 ADC 1st Qtr 2nd Qtr 3rd Qtr 4th Qtr Ten-bit converter North ADC multiplexer controlled by ADCON0 selection Analog input voltage VDC VREF + Reference voltage VREF Reference voltage switch controlled by ADCON0 selection ADCON0 ADCON1 ADCS0 ADCS1 Bộ môn Kỹ Thuật Máy Tính ADCS2 79 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT ADC Clock ADCON0 ADCON1 Frequency ADCS1 ADCS0 ADCS2 FOSC /2 0 FOSC /4 0 FOSC /8 FOSC /16 1 FOSC /32 0 FOSC /64 1 FRC 1 x FOSC is the oscillator frequency (i.e.,four time the chip’s internal clock rate) FRC is the frequency of an internal RC oscillator (167 kHz < FRC 15 cycles ; Bat dau bien doi A_D 8.3 Bài tập +5V R1 K R2 RAØ 470Ω Tích hợp module LCD, lấy giá trị điện từ biến trở hiển thị lên LCD Bộ môn Kỹ Thuật Máy Tính 81 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Bài : Khoa KH & KTMT Khảo sát khối chức capture Mode Nội dung: Khảo sát khối chức CCP2/Timer3 capture mode Yêu cầu: Viết chương trình sử dụng chức capture mode để đo tần số độ rộng xung mạch giao động 555 9.1 Các bước thực capture mode Bước Tạo project giống hướng dẫn chương lấy tên project capture chọn chip 18f4520 Ta hình sau: Bước Include file p18f4520.inc vào file capture.asm Bước Tích hợp module LCD vào project capture, tham khảo tập LCD Bước Khởi tạo init_capture để ta sử dụng capture mode dễ dàng Bộ môn Kỹ Thuật Máy Tính 82 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM TRISC Khoa KH & KTMT T3CON CCP2CON X X X X X X X If CCP2is assigned to RC1 TRISB x X X X X X x If CCP2is assigned to RB3 0 0 P=1 1 1 P=2 P=4 P=8 CCPR2H 0 0 Timer3 prescaler divider 0 Capture evey falling edge Capture evey rising edge Capture evey rising edge 1 Capture evey 16 rising edge th th Edge counter and edge selsction CCPR2L CCP2 pin Prescaler Transfer ÷P P = 1, 2, 4, or TMR3L TMR3H Fosc/4 (internal clock) Set PIR2 X X Xx X X X X Generate a high priority interupt CCP2IF Generate a low priority interupt CCP2IE PIE2 GIEH X X Xx X X X X GIEL CPP2IP X X X X X x INTCON RCON 1X X Xx X X X X x IPR2 X X Xx X X X X IPEN = : Enable priority levels Figure CCP2/Timer3 capture mode +5V R R8 C Bộ môn Kỹ Thuật Máy Tính output 555 time r RC 0.1uF 83 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Hình 9-1: Tập ghi sử dụng chế độ capture mode mạch giao động 555 init_capture clrf bsf movlw movwf movlw movwf bsf bsf bcf movlw movwf movwf bsf bsf bsf return capture_var TRISC,RC1 0xb8 T3CON 0x05 CCP2CON RCON,IPEN IPR2,CCP2IP PIR2,CCP2IF TMR3H TMR3L T3CON,TMR3ON PIE2,CCP2IE INTCON,GIEH ; Nap capture_var = ; RC1 input ; Prescaler = ; Khoi dong T3CON ; Capture every ricing edge ; Khoi dong CCP2CON ; Enable priority level ; high level ; Xoa co ngat ; Nap bo dem ; Timer3 Bat dau dem ; Cho phep CCP2 ngat ; Cho phep ngat toan cuc Để khởi tạo chức capture, ta phải cấu hình cho PORTC1 input Tiếp theo khởi tạo hệ số chia Prescaler thông qua việc cấu hình ghi T3CON Sau ta khởi dộng chế độ capture cách cấu hình ghi CCP2CON ghi ngắt 9.2 Chương trình mẫu List p=18f4520 #include code goto org goto "p18f4520.inc" start 08h isr_high udata ; - Bien cho capture mode -; decode_var res capture_var res thuong_so res so_bi_chia res so_chia res so_bcd res start PRG call call Bộ môn Kỹ Thuật Máy Tính 1 3 3 code init_lcd init_capture ; Khoi dong LCD ; Khoi dong capture 84 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM bra init_capture clrf bsf movlw movwf movlw movwf bsf bsf bcf movlw movwf movwf bsf bsf bsf return Khoa KH & KTMT $ capture_var TRISC,RC1 0xb8 T3CON 0x05 CCP2CON RCON,IPEN IPR2,CCP2IP PIR2,CCP2IF TMR3H TMR3L T3CON,TMR3ON PIE2,CCP2IE INTCON,GIEH ; Nap capture_var = ; RC1 input ; Prescaler = ; Khoi dong T3CON ; Capture every ricing edge ; Khoi dong CCP2CON ; Enable priority level ; high level ; Xoa co ngat ; Nap bo dem ; Timer3 Bat dau dem ; Cho phep CCP2 ngat ; Cho phep ngat toan cuc capture_isr; Frequency = 1000000/(8 * N) -; bcf PIR2,CCP2IF bcf T3CON,TMR3ON tstfsz capture_var bra cap1 setf capture_var clrf TMR3L clrf TMR3H bsf T3CON,TMR3ON return cap bcf INTCON,GIEH bcf PIR2,CCP2IE movff CCPR2L,so_chia+2 movff CCPR2H,so_chia+1 clrf so_chia movlw 0x48 movwf so_bi_chia+2 movlw 0xe8 movwf so_bi_chia+1 movlw 0x01 movwf so_bi_chia call chia_24bit call hexa_to_bcd movff so_bcd,decode_var swapf decode_var call decode_ascii call lcd_print_char movff so_bcd,decode_var call decode_ascii call lcd_print_char movff so_bcd+1,decode_var swapf decode_var call decode_ascii call lcd_print_char movff so_bcd+1,decode_var call decode_ascii call lcd_print_char movff so_bcd+2,decode_var swapf decode_var Bộ môn Kỹ Thuật Máy Tính 85 ; Xoa co ngat ; Dung dem Timer3 ; Ngat lan ; = 0xff ; Xoa bo dem ; Timer3 Bat dau dem ; Cam ngat toan cuc cao ; Cam CCP2 ngat ; Nap so chia ; Nap so bi chia ; Little Endian ; Nap so bi chia ; Nap so bi chia ; 125000 : so dem ; Doi sang BCD ; Xuat du lieu LCD ; Lay byte cao ; Giai ma binary sang ma ASCII ; Xuat byte1 LCD ; Lay byte thap ; Giai ma binary sang ma ASCII ; Xuat byte2 LCD ; Xuat du lieu+1 LCD ; Lay byte cao ; Giai ma binary sang ma ASCII ; Xuat byte1 LCD ; Lay byte thap ; Giai ma binary sang ma ASCII ; Xuat byte2 LCD ; Xuat du lieu+2 LCD ; Lay byte cao Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT call call movff decode_ascii lcd_print_char so_bcd+2,decode_var ; Giai ma binary sang ma ASCII ; Xuat byte1 LCD ; Lay byte thap call call decode_ascii lcd_print_char ; Giai ma binary sang ma ASCII ; Xuat byte2 LCD movlw movwf call movlw movwf call movlw movwf call bra '' char lcd_print_char 'H' char lcd_print_char 'z' char lcd_print_char $ isr_high call retfie chia_24bit clrf clrf clrf tstfsz bra tstfsz bra tstfsz bra return chia_24_1 movf subwf movf subwfb movf subwfb btfss bra incfsz bra incfsz bra incfsz bra chia_24_2 return ; ; ; ; ; ; ; capture_isr thuong_so+2 thuong_so+1 thuong_so so_chia+2 chia_24_1 so_chia+1 chia_24_1 so_chia chia_24_1 ; Nap ket qua = so_chia+2,w so_bi_chia+2 so_chia+1,w so_bi_chia+1 so_chia,w so_bi_chia STATUS,C chia_24_2 thuong_so+2 chia_24_1 thuong_so+1 chia_24_1 thuong_so chia_24_1 ; Tru so bi chia cho so chia ; Little Endian hexa_to_bcd clrf so_bcd+2 clrf so_bcd+1 clrf so_bcd hexa2 tstfsz thuong_so+2 bra hexa5 tstfsz thuong_so+1 bra hexa3 tstfsz thuong_so bra hexa4 return hexa5 decf thuong_so+2 bra hexa1 hexa3 decf thuong_so+1 Bộ môn Kỹ Thuật Máy Tính ; Bo truong hop so_chia = ; So bi chia nho hon so chia ; Tang ket qua len ; Nap gia tri ban dau 86 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM setf bra hexa4 decf setf setf hexa1 incf movf daw movwf tstfsz bra incf movf daw movwf tstfsz bra incf movf daw movwf bra Khoa KH & KTMT thuong_so+2 hexa1 thuong_so thuong_so+1 thuong_so+2 so_bcd+2 so_bcd+2,w so_bcd+2 so_bcd+2 hexa2 so_bcd+1 so_bcd+1,w so_bcd+1 so_bcd+1 hexa2 so_bcd so_bcd,w so_bcd hexa2 9.3 Bài tập Viết chương trình sử dụng chức capture mode để đo độ rộng xung mức mạch giao động 555 Bộ môn Kỹ Thuật Máy Tính 87 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bài 10 : Khảo sát khối chức PWM, LVD Nội dung: Khảo sát khối chức PWM Khảo sát khối chức LVD Yêu cầu: Viết chương trình sử dụng chức PWM điều khiển độ sáng LED Viết chương trình sử dụng chức LVD để đưa vi điều khiển vào chế độ sleep điện áp nhỏ hay 4,03V 10.1 Các bước thực PWM Bước Tạo project giống hướng dẫn chương lấy tên project pwm chọn chip 18f4520 Ta hình sau: Bước Include file p18f4520.inc vào file pwm.asm Bước Tích hợp module LCD vào project pwm Bước Khởi tạo module PWM để ta sử dụng cách dễ dàng Bộ môn Kỹ Thuật Máy Tính 88 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 470 RC J RC BZI R11 + 22ØΩ Valu e BUZZER- ASTI2 ø MLTRQ Hình 10-1 Cổng xuất tín hiệu PWM init_pwm bcf movlw movwf movlw movwf movff bcf bcf movlw movwf movlw movwf return TRISC,2 0x80 PR2 0x40 CCPR1L CCPR1L,PWM_var CCP1CON,CCP1X CCP1CON,CCP1Y 0x05 T2CON 0x0f CCP1CON ; RC2 output ; initialize PWM cycle ; Khoi dong PWM duty cycle ; Cho hien thi LCD ; bit ; bit ; postcale 1:1 ; prescale 4, Timer2 ON ; turn buzzer on Để khởi tạo chức pwm, ta phải cấu hình cho PORTC2 output Tiếp theo khởi tạo chu kì PWM thông qua việc cấu hình ghi PR2 Sau ta khởi tạo duty cycle xung pwm cách cấu hình ghi CCPR1L 10.2 Chương trình mẫu list #include p=18f4520 "p18f4520.inc" org bra 0x000000 start udata ; - Bien cho PWM -; decode_var res PWM_var res start call call movff swapf call call movff call call goto Bộ môn Kỹ Thuật Máy Tính ; reset vector 1 init_lcd init_pwm PWM_var,decode_var decode_var decode_ascii lcd_print_char PWM_var,decode_var decode_ascii lcd_print_char $ 89 ; Khoi dong LCD ; Xuat du lieu LCD ; Lay byte cao ; Giai ma binary sang ma ASCII ; Xuat byte1 LCD ; Lay byte thap ; Giai ma binary sang ma ASCII ; Xuat byte2 LCD Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 10.3 Các bước thực LVD LVDCON VDC 1: Power up and enable LVD circuitry 0: Disable LVD circuitry LVDE N Internal reference voltage stable flag IRVS 1: 1.2 V reference is ready 0: 1.2 V reference is not ready Threshold selection (lower threshold) LVD Reserved 0 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1 11 1 1 2.0 V – 2.12 V 2.2V – 2.33 V 2.4 V – 2.54 V 2.5 V – 2.65 V 2.7V – 2.86 V 2.8V – 2.97 V 3.0 V – 3.18 V 3.3 V – 3.50 V 3.5 V – 3.71 V 3.6V – 3.82 V 3.8 V – 4.03 V 4.0 V – 4.24 V 4.2V – 4.45 V 4.5 V – 4.77 V External input on RA5/LVDIN pin VDD LVD circuitry VDD VMUX RA RA5/LVDIN Resistor ladder and External input pin analog multiplexer Select Analog comparator Set LVDIF IF V MUX < VIR Clear LVDIF in software LVDCON RB 1.2V internal reference VIR set PIR2 High-priority interrupt IPE2 PIE TRISA X X X X X X X LVDI LVDIF Set (for input) to use external input Low-priority interrupt GIEH INTCON INTCO GIEL X X X X X X Bộ môn Kỹ Thuật Máy Tính PIE2 X X X X X X X RCON X X X X X X X LVDIP X X X X X IPR2 X X RCO 90 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bước Nối RA5 với RA0 dùng jumper mạch thí nghiệm Bước Viết chương trình khởi động LVD init_LVD movlw movwf bsf bsf bsf bsf bcf movlw movwf bsf bsf return B'11111001' ADCON1 TRISA,RA0 TRISA,RA5 RCON,IPEN IPR2,LVDIP PIR2,LVDIF B'0011111' LVDCON PIE2,LVDIE INTCON,GIEH ; AN0, AN5 Analog ; Port analog ; RA0 input ; RA5 input ; Cho phep uu tien ; Muc uu tien cao ; Xoa ngat LVD ; 1.2V Ready, Enable LVD ; – 1,2 V ; Cho phep LVD ; ngat toan cuc cao = Bước Thực chương trình code goto org goto start 08h isr_high udata PRG start LVD_isr ` isr_high call movlw movwf call movlw movwf call movlw movwf call movlw movwf call rcall bra code init_lcd 'L' char lcd_print_char 'V' char lcd_print_char 'D' char lcd_print_char ':' char lcd_print_char init_LVD $ ; Khoi dong LCD ; Thuc day bcf bcf movlw movwf call bcf sleep bra PIR2,LVDIF INTCON,GIEH 'R' char lcd_print_char PIE2,LVDIE ; Xoa ngat LVD ; ngat toan cuc cao = ; Phat hien LVD call retfie LVD_isr ; Xuat byte2 LCD ; Thuc day ; Xuat byte2 LCD ; Thuc day ; Xuat byte2 LCD ; Thuc day ; Xuat byte2 LCD ; Khoi dong LVD ; Xuat LCD ; Cấm LVD $ 10.4 Bài tập a) Viết chương trình xuất LED 256 mức sáng, thay đổi sau giây xuất giá trị mức sáng lên LCD b) Viết chương trình sử dụng chức LVD để đưa vi điều khiển vào chế độ sleep điện áp nhỏ hay 1,2V c) Sửa chương trình thực ngắt LVD điện áp nguồn nhỏ 2,7V Bộ môn Kỹ Thuật Máy Tính 91 Thực hành Vi xử lý Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT [...]... T0CON,TMR0ON 0x3c TMR0H 0xaf TMR0L T0CON,TMR0ON Bộ môn Kỹ Thuật Máy Tính ; nap lai so dem 50000 cho timer0 ; cho phep timer0 dem lai Thực hành Vi xử lý – Vi điều khiển 21 Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển 22 [Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 3.2 Chương trình mẫu #include code goto ; Vung du lieu udata tmr0_var1 res ; Vung... tự CGRAM thứ nhất Lúc này giá trị của ô nhớ 0x47 là 0x00 hoặc 0x08 (vị trí của mẫu ký tự CGRAM thứ nhất “®”) Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý- Vi điều khiển 25 [Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý- Vi điều khiển 26 Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT 3.3.3 Các lệnh giao tiếp với LCD Lệnh Clear display Return home Entry mode set Display... khởi tạo 3.4 Các bước hiện thực yêu cầu 2 Bước 1 Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project là LCD, tạo file lcd.asm và chọn chip 18f4520 Ta được hình sau: Bộ môn Kỹ Thuật Máy Tính 29 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bước 2 Include file p18f4520.inc vào file lcd.asm Bước 3 Dựa vào sơ đồ nguyên lý kết nối vi điều khiển với LCD kí tự ta define... RB0 xuat 18 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT bsf TRISA,RA4 ; RA4 nhap return end Sau khi có chương trình mẫu ta thực hiện vi c compile chương trình và nạp xuống mạch để chạy chương trình như hướng dẫn ở chương 1 2.6 Bài tập a) Vi t chương trình để khi nhấn RA4 thì các led sẽ sáng đếm lên, mỗi lần nhấn đếm lên 1 đơn vị theo hệ đếm H và hệ đếm O b) Vi t chương... ngoai return end Sau khi có chương trình mẫu ta thực hiện vi c compile chương trình và nạp xuống mạch để chạy chương trình như hướng dẫn ở chương 1 2.4 Các bước hiện thực yêu cầu 2 Bước 1 Tạo project mới giống như hướng dẫn ở chương 1 lấy tên project là Nut_nhan và chọn chip 18f4520 Ta được hình sau: Bộ môn Kỹ Thuật Máy Tính 17 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT... ghi SFR thì ta chọn View_|Special Function Registers sẽ xuất hiện của sổ như hình sau: Hay để xem một và thanh ghi mà ta quan tâm thì có thể dùng Watch để xem bằng cách vào menu View_|Watch thì hình sau sẽ xuất hiện: Muốn xem thanh ghi nào, ta chỉ vi c chọn thanh ghi tương ứng trong combobox bên trên, sau đó nhấn Add SFR Bộ môn Kỹ Thuật Máy Tính 11 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách... Value BUZZER- AST124ØMLTRQ Vi t chương trình phát xung 1KHz ra loa khi nhấn RA4 và ngừng phát xung khi nhấn RA4 lần 2 Bộ môn Kỹ Thuật Máy Tính Thực hành Vi xử lý – Vi điều khiển 19 Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bài 3 : Khảo sát cơ chế đọc trạng thái Timer, xuất dữ liệu ra LCD ký tự Nội dung: Khảo sát các chế độ hoạt động của các bộ định thời Khảo sát các thanh ghi điều khiển bộ định thời Biết... trở về đầu chương trình Bộ môn Kỹ Thuật Máy Tính 10 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Khoa KH & KTMT Bước 3 Khi debug thì ta cũng cần phải biết giá trị của các thanh ghi cũng như bộ nhớ của chip như thế nào, để xem được các giá trị này thì chúng ta qua menu View Để xem được giá trị của các thanh ghi trong PIC ta chọn menu View_|File registers sẽ xuất hiện cửa sổ như hình sau:... cần phải có mạch debug, và các hiện tượng xảy ra giống như khi chạy thực tế 1.6 Bài tập a) Đọc 1 byte bộ nhớ chương trình tại địa chỉ 0x00 vi t vào bộ nhớ EEPROM tại địa chỉ 0x10 rồi đọc EEPROM xuất ra cổng RB3 đến RB0 Chú ý nửa byte cao xuất ra trước, nửa byte thấp xuất ra sau Bộ môn Kỹ Thuật Máy Tính 12 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM Bài 2 : Khoa KH & KTMT Khảo sát cổng... bắt đầu vòng lặp ngoài Bộ môn Kỹ Thuật Máy Tính 15 Thực hành Vi xử lý – Vi điều khiển Trường ĐH Bách Khoa TP.HCM dl_3 movwf call decfsz bra decfsz bra return delay_1sb delay1ms delay_1sb dl_3 delay_1sa dl_2 Khoa KH & KTMT ; bắt đầu vòng lặp trong ; kết thúc vòng lặp trong (250 lan) ; kết thúc vòng lặp ngoài (4 lần) Bước 6 Vi t chương trình cho hàm begin thực hiện các yêu cầu của đề bài : begin incf LATB