PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

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
Prev Previous Post   Next Post Next
Old 09-05-2007, 02:15 PM   #10
The lastest
Nhập môn đệ tử
 
Tham gia ngày: Mar 2007
Bài gửi: 5
:
Mình dùng Pic 18f4580 để lập trình với ứng dựng đơn giản để thử thì gặp lỗi mà không khắc phục được
Ứng dụng của mình chỉ hiển thị ra led 7 đoạn và tăng giá trị sau mỗi phím bấm
Tuy nhiên , quá trình chạy thử thì có vấn đề như sau:
vấn đề : khi bộ đếm đến 4 thì reset trở về lại đầu chương trình
lúc đó ,
- khi thực hiện lệnh MOVF COUNT,W,0 thì
thanh ghi PCL có giá trị là 0x0000CC h ,Status : 0x01 h, STKPTR : 0x01 , thanh ghi W có giá trị là 0x0A , biến COUNT có giá trị là 0x0A h
- khi thực hiện lệnh CALL TABLE thì nhảy đến vị trí có nhãn là TABLE , thanh ghi PCL có giá trị là 0x000F4 h , Status : 0x01 h , STKPTR : 0x02 dỉnh ngăn xếp TOS là : 0x0000D0
- khi thực hiện lệnh ADDWF PCL ,f,1 thì PCL có giá trị là 0x00000 và reset lại tại vị trí ban đầu (không phải reset chưong trình vì tất cả các giá trị khác vẫn không bị reset như thanh ghi STKPTR vẫn còn giá trị là 0x02) và thực hiện từ đầu chương trình
Tại sao trong những lần thực hiện lệnh ADDWF PCL,f,1 không xảy ra reset mà chỉ khi biến COUNT có giá trị là0x0A . Mình cũng có một số thay đổi khác thì cũng xảy ra trường hợp giống như vậy khi biến COUNT có giá trị là 0x006
Như vậy nguyên nhân do đâu mà xảy ra reset như trên, cách khắc phục.
Mình cũng đã thử viết chương trình với những ứng dụng khác đơn giản hơn như nháy led hay chạy led lan dần thì không gặp vấn đề gì cả , chứng tỏ là config cho PIC là đúng
Sau đây là mã viết bằng ASM
Code:
LIST P=18F4580 ;CHON PIC HOAT DONG
#include <P18F4580.INC> ;CAC DINH NGHIA CAC THANH GHI CHO PIC

;************************************************* ****************************
; CAU HINH CHO PIC
__CONFIG _CONFIG1H, _OSC_HS_1H & _FCMENB_OFF_1H
__CONFIG _CONFIG2L, _PWRT_OFF_2L & _BOR_OFF_2L & _BORV_20_2L
__CONFIG _CONFIG2H, _WDT_OFF_2H & _WDTPS_32768_2H
__CONFIG _CONFIG3H, _MCLRE_ON_3H & _PBADEN_OFF_3H
__CONFIG _CONFIG4L, _DEBUG_OFF_4L & _XINST_OFF_4L & _BBSIZ_2048_4L & _LVP_OFF_4L & _STVREN_OFF_4L
__CONFIG _CONFIG5L, _CP0_OFF_5L & _CP1_OFF_5L
__CONFIG _CONFIG5H, _CPB_OFF_5H & _CPD_OFF_5H
__CONFIG _CONFIG6L, _WRT0_OFF_6L & _WRT1_OFF_6L
__CONFIG _CONFIG6H, _WRTB_OFF_6H & _WRTC_OFF_6H & _WRTD_OFF_6H
__CONFIG _CONFIG7L, _EBTR0_OFF_7L & _EBTR1_OFF_7L
__CONFIG _CONFIG7H, _EBTRB_OFF_7H & _DEVID1 & _IDLOC0

;************************************************* ****************************
;KHAI BAO BIEN

CBLOCK 0x080
WREG_TEMP ;BIEN TAM DE LUU GIA TRI THANH GHI W
STATUS_TEMP ;BIEN TAM DE LUU GIA TRI THANH GHI STATUS
BSR_TEMP ;BIEN TAM DE LUU GIA TRI THANH GHI BSR
ENDC

CBLOCK 0x120
COUNT ;example of a variable in access RAM
COUNT1
COUNT2
COUNT3
ENDC

;************************************************* ****************************

ORG 0X0000 ;Reset vector
GOTO MAIN

;************************************************* ****************************
;CHUONG TRINH CHINH BAT DAU TU DAY
;PORT B LA OUT PUT XUAT TIN HIEU DE LED NHAY
;RC0 KICH LED 7 DOAN DE HIEN THI
;RC7 LA INPUT DE TANG GIA TRI CUA LED 7 DOAN
;************************************************* ****************************

ORG 0x0080 ;go to start of main code

MAIN
MOVLB 0X0F ;CHON BANK15
SETF LATB,1
CLRF LATD,1
CLRF LATC,1
MOVLW 0X07
MOVWF ADCON1,1

CONFIG_B ;THIET LAP CAU HINH CHO PORTB
MOVLW 0X00
MOVWF TRISB,1
CONFIG_D ;THIET LAP CAU HINH CHO PORTD
MOVWF TRISD,1
CONFIG_E ;THIET LAP CAU HINH CHO PORTC
MOVLW 0XF0
MOVWF TRISC,1

WAIT
MOVLW 0X00
MOVWF COUNT,0
NEXT
CALL DATA_DISPLAY
BTFSC PORTC,7,1 ;kiem tra nut duoc bam hay chua
GOTO NEXT ;neu ko thi tro lai
CHK
CALL DELAY ;tre mot luc
BTFSC PORTC,7,1 ;kiem tra nut dc nha ra chua
GOTO INC ;nhay den tang bien dem
CALL DATA_DISPLAY ;neu khong thi hien thi led
GOTO CHK ;nhay den CHK va den khi nut duoc nha ra
INC
INCF COUNT,F,0
INCF COUNT,F,0 ;tang bien dem moi lan 2 don vi
MOVF COUNT,W,0
MOVWF LATD,0
SUBLW 0X20 ;kiem tra da hien thi xong mot vong (hien thi chu F)
BTFSC STATUS,Z,1
GOTO WAIT ;nhay noi bat dau va tro lai mot vong moi
GOTO NEXT ;con khong thi tiep tuc tang cho den F

DATA_DISPLAY ;bieu dien hien thi LED
MOVF COUNT,W,0
CALL TABLE ;goi bang lay du lieu hien thi
MOVWF LATB,1
CALL DELAY
RETURN

DELAY
CLRF COUNT1,0
CLRF COUNT2,0
MOVLW D'13'
MOVWF COUNT3,0
LOOP
DECFSZ COUNT1,f,0
GOTO LOOP
DECFSZ COUNT2,f,0
GOTO LOOP
DECFSZ COUNT3,f,0
GOTO LOOP
RETURN

TABLE
ADDWF PCL,F,1
RETLW 0XC0 ;SO 0
RETLW 0XF9 ;SO 1
RETLW 0XA4 ;SO 2
RETLW 0XB0 ;SO 3
RETLW 0X99 ;SO 4
RETLW 0X92 ;SO 5
RETLW 0X82 ;SO 6
RETLW 0XF8 ;SO 7
RETLW 0X80 ;SO 8
RETLW 0X90 ;SO 9
RETLW 0X88 ;chu A
RETLW 0X83 ;chu B
RETLW 0XC6 ;chu C
RETLW 0XA1 ;chu D
RETLW 0X86 ;chu E
RETLW 0X8E ;chu F

RETLW 0XFF ;OFF

;************************************************* ****************************
;End of program

END
The lastest vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến

Similar Threads
Ðề tài Người gửi Chuyên mục Trả lời Bài mới
Pic18 voi USB Khanhnghia Cơ bản về vi điều khiển và PIC 2 24-02-2009 11:41 PM
interrupt in pic18 littlephoc Cơ bản về vi điều khiển và PIC 9 18-04-2007 01:27 AM
Bac falleaf co the viet tourial Pic bang C duoc ko namezero Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 2 21-10-2005 02:39 PM


Múi giờ GMT. Hiện tại là 06:29 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam