|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
|
Ðiều Chỉnh | Xếp Bài |
11-10-2009, 12:47 PM | #1 |
Nhập môn đệ tử
Tham gia ngày: Oct 2009
Bài gửi: 2
: |
giúp em chuơng trình cảm biến LM35 này với
em có đề tài dùng cảm biến dùng pic 16f877a và cảm biến nhiệt độ lm35 đo nhiệt độ hiển thị ra lcd nhưng viết bang mpasm ngôn ngữ này viết phức tạp quá(viết bằng C còn đỡ). em đang bị bí chuơng trình viết ra nhưng khi mô phỏng nó không chạy. không biết nó sai chỗ nào mong các huynh xem dùm em với
billion thanks Code:
;========================================================================== ; Ten chuong trinh :Mach do nhiet do dung cam bien LM35 hien thi LCD ; Mo ta phan cung : Dung PIC16F628A - thach anh 20MHz ; :cam bien nhiet LM35 mac vao kenh AN0 cua port0 ; :LCD giao tiep 8 bit. ; :RS, RW, E mac vao 3 chan RD5, RD6 RD7 ;========================================================================== TITLE "Mach Do Nhiet Dung Cam Bien LM35 Hien Thi LCD.asm" PROCESSOR P16F877A INCLUDE <P16F877A.inc> __CONFIG _CP_OFF & _PWRTE_ON & _XT_OSC &_WDT_OFF & _HS_OSC & _BODEN_OFF & _LVP_OFF & _CPD_OFF ;========================================================================== CBLOCK 0x020 TRAM CHUC DVI SOBICHIA SOCHIA SODU THUONG KQCD ADC COUNT1 COUNT2 COUNT3 COUNT4 TICH SONHAN1 SONHAN2 A ENDC ;=========================================================================== ORG 0x0000 GOTO START ORG 0x0005 START BANKSEL TRISA CLRF TRISB CLRF TRISD MOVLW H'FF' MOVWF TRISA ;portA nhan du lieu ADC CLRF ADCON1 MOVLW B'11001000' MOVWF ADCON1 BANKSEL ADCON0 BSF ADCON0, 0 ;bat nguon cho ADC hoat dong BSF ADCON0, 7 ;chon kenh AN0 BCF ADCON0, 5 BCF ADCON0, 4 BCF ADCON0, 3 CALL KTLCD CALL DONG1 MAIN CALL TRANFER_ADC CALL DELAY40MS CALL DONG2 CALL DELAY40MS GOTO MAIN ;=========================================================================== ;cac chuong trinh con ;=========================================================================== ;-------------------------------------------------------------------------- ;chuong trinh con chuyen doi ADC ;-------------------------------------------------------------------------- TRANFER_ADC CALL DELAY12MS CALL TRAN ;goi chuong trinh con chuyen doi ADC MOVF ADRESL, 0 MOVWF KQCD CALL HEXTOASCII ;giai ma ket qua chuyen doi RETURN ;-------------------------------------------------------------------------- ;chuong trinh con ADC ;-------------------------------------------------------------------------- TRAN BSF ADCON0, 2 ;set bit go/done cho phep chuyen doi KT BTFSC ADCON0, 2 ;kiem tra chuyen doi xong chua, chua ve lam tiep GOTO KT RETURN ;--------------------------------------------------------------------------- ;chuong trinh con chuyen ma hex sang MA LCD ;--------------------------------------------------------------------------- HEXTOASCII BANKSEL KQCD MOVF KQCD, 0 ;nhiet do = ADC *100/ 51 MOVWF SONHAN1 MOVLW D'100' MOVWF SONHAN2 CALL MUL MOVF TICH, 0 MOVWF SOBICHIA MOVLW D'51' MOVWF SOCHIA CALL DIVITE MOVF THUONG, 0 MOVWF KQCD MOVLW D'55' SUBWF KQCD, 0 ;so sanh ket qua voi 55 BTFSS STATUS, 0 ;so sanh voi co c GOTO NHIETAM ;co C=0, tuc phep toan co kq <0 GOTO NHIETDUONG ;co C=1, tuc phep toan co kq >0 NHIETAM ;giai ma nhiet do am tu -55 den -1 do C MOVLW D'45' MOVWF TRAM ;ma asscii cua dau '-' MOVF KQCD, 0 SUBLW D'55' MOVWF SOBICHIA MOVLW D'10' MOVWF SOCHIA CALL DIVITE MOVF SODU, 0 ADDLW 0x30 MOVWF DVI MOVF THUONG, 0 ADDLW 0x30 MOVWF CHUC MOVF CHUC, 0 ;kiem tra hang chuc de xoa so 0 vo nghia XORLW D'48' ;so sanh voi so 0 BTFSS STATUS, Z GOTO EXIT ;thoat chuong trinh con neu chuc khac 0 MOVLW D'32' ;neu chuc la 0 thi hien thi khoang trang MOVWF CHUC GOTO EXIT NHIETDUONG MOVWF SOBICHIA ;sobichia = kqcd - 55 MOVLW D'10' MOVWF SOCHIA CALL DIVITE MOVF SODU, 0 ADDLW 0x30 MOVWF DVI MOVF THUONG, 0 CALL DIVITE MOVF SODU, 0 ADDLW D'30' MOVWF CHUC MOVF THUONG, 0 ADDLW D'30' MOVWF TRAM MOVF TRAM, 0 ;kiem tra hang tram de xoa so 0 vo nghia XORLW D'48' ;so sanh voi so 0 BTFSS STATUS, Z GOTO EXIT ;thoat chuong trinh con neu tram khac 0 MOVLW D'32' ;neu tram la 0 thi hien thi khoang trang MOVWF TRAM MOVF CHUC, 0 ;kiem tra hang chuc de xoa so 0 vo nghia XORLW D'48' ;so sanh voi so 0 BTFSS STATUS, Z GOTO EXIT ;thoat chuong trinh con neu chuc khac 0 MOVLW D'32' ;neu chuc la 0 thi hien thi khoang trang MOVWF CHUC GOTO EXIT EXIT RETURN ;---------------------------------------------------------------------- ;chuong trinh con divide ;---------------------------------------------------------------------- DIVITE CLRF THUONG X MOVF SOCHIA, 0 SUBWF SOBICHIA,1 ;W=sodu-sochia, c=1 neu kq>=0 va nguoc lai BTFSC STATUS, C ;bo qua lenh ke neu c=1, kq duong GOTO EXIT1 ;thoat khoi chuong trinh con neu kq am INCF THUONG, 1 ;tang thuong so len 1 MOVF SOBICHIA,0 MOVWF SODU GOTO X EXIT1 RETURN ;---------------------------------------------------------------------- ;chuong trinh con MUL ;---------------------------------------------------------------------- MUL CLRF TICH Y MOVF SONHAN1, 0 ADDWF SONHAN1, 0 MOVWF TICH DECFSZ SONHAN2, 1 GOTO Y RETURN ;---------------------------------------------------------------------- ;chuong trinh con khoi tao LCD ;---------------------------------------------------------------------- KTLCD MOVLW 0x38 ;Set 8 bit mode, hien thi 2 hang, kieu ki tu 5x8 MOVWF A CALL GHIMADK CALL DELAY40MS MOVWF A CALL GHIMADK CALL DELAY40MS MOVLW 0X0C MOVWF A CALL GHIMADK CALL DELAY40MS MOVLW 0X01 MOVWF A CALL GHIMADK CALL DELAY40MS RETURN GHIMADK MOVF A,0 MOVWF PORTB BCF PORTD,0 BCF PORTD,1 BSF PORTD,2 BCF PORTD,2 RETURN ;----------------------------------------------------------------------- ;chuong trinh con hien thi chu dong 1 ;----------------------------------------------------------------------- DONG1 MOVLW 0x80 MOVWF A CALL GHIMADK CALL DELAY CLRF COUNT4 LABEL3 MOVF COUNT4, 0 CALL TABLE2 MOVWF A CALL GHIDL CALL DELAY INCF COUNT4,0 XORLW D'20' BTFSC STATUS, Z GOTO EX1 INCF COUNT4,1 GOTO LABEL3 EX1 RETURN ;----------------------------------------------------------------------- ;chuong trinh con ghi nhiet do ra dong 2 ;----------------------------------------------------------------------- DONG2 MOVLW 0xC1 ;ve dau dong thu hai MOVWF A CALL GHIMADK CALL DELAY L1 MOVF TRAM, 0 MOVWF A CALL GHIDL CALL DELAY MOVF CHUC, 0 MOVWF A CALL GHIDL CALL DELAY MOVF DVI, 0 MOVWF A CALL GHIDL CALL DELAY CLRF COUNT4 LABEL2 MOVF COUNT4, 0 CALL TABLE1 MOVWF A CALL GHIDL CALL DELAY40MS INCF COUNT4, 1 MOVF COUNT4, 0 XORLW D'5' BTFSS STATUS, Z GOTO LABEL2 RETURN ;----------------------------------------------------------------------- ;bang ma ki tu cua tabel ;----------------------------------------------------------------------- TABLE1 ADDWF PCL, 1 DT " DO C" TABLE2 ADDWF PCL, 1 DT "NHIET DO DO DUOC LA:" ;----------------------------------------------------------------------- ;chuong trinh con ghi ki tu ra LCD ;----------------------------------------------------------------------- GHIDL MOVF A,0 MOVWF PORTB BSF PORTD,0 BCF PORTD,1 BSF PORTD,2 BCF PORTD,2 RETURN ;------------------------------------------------------------------------ ;cac chuong trinh con delay ;------------------------------------------------------------------------ DELAY100MS MOVLW D'100' ;delay 100mS GOTO D0 DELAY40MS MOVLW D'50' ;delay 50mS GOTO D0 DELAY12MS MOVLW D'12' GOTO D0 DELAY MOVLW 0x05 ;delay 5.000 ms (4 MHz clock) D0 MOVWF COUNT1 D1 MOVLW d'199' ;delay 1mS MOVWF COUNT2 MOVLW 0x01 MOVWF COUNT3 DELAY_0 DECFSZ COUNT2, 1 GOTO $+2 DECFSZ COUNT3, 1 GOTO DELAY_0 DECFSZ COUNT1, 1 GOTO D1 RETURN END huynh nào xem em sai chỗ nào chi dùm em với. em mới tìm hiểu về pic thôi nên gà lắm. mong các huynh giúp dùm em. chân thành cảm ơn thay đổi nội dung bởi: phamminhtuan, 12-10-2009 lúc 10:19 AM. Lý do: Định dạng code |
|
|