![]() |
|
Tài trợ cho PIC Vietnam |
MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ... |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#1 |
Nhập môn đệ tử
Tham gia ngày: Mar 2009
Bài gửi: 1
: |
Xin giúp đỡ về TMR0 trong PIC16F877A
Mình mới vừa học PIC không lâu. Nhưng đụng đến TMR0 thì không hiểu sao chương trình chạy không như ý. Mình muốn làm mạch chớp tắt 8 LED qua giao tiếp với POTRB. Mình không hiểu sao đoạn code thứ nhất thì Proteus chạy đúng còn đoạn code thứ hai lại sai??? Xin các bạn giúp đỡ!!!
Code 1: Code:
;================================================= ; Phan khoi tao PIC #include <p16F877A.inc> __CONFIG _WDT_OFF & _CP_OFF & _PWRTE_ON & _HS_OSC ;================================================= ;================================================= ; Phan dinh nghia #DEFINE LED1 PORTB, 7 #DEFINE LED2 PORTB, 6 #DEFINE LED3 PORTB, 5 #DEFINE LED4 PORTB, 4 #DEFINE LED5 PORTB, 3 #DEFINE LED6 PORTB, 2 #DEFINE LED7 PORTB, 1 #DEFINE LED8 PORTB, 0 ;================================================= ;================================================= ; Phan khai bao cac bien ;------------------------- ; Bien nam o Bank 0 ;------------------------- ORG 0x0A0 W_SAVE RES 1 STATUS_SAVE RES 1 PCH_SAVE RES 1 FSR_SAVE RES 1 VARIABLE_A RES 1 ;================================================= ;================================================= ;------------------------------------------------- ; Chuong trinh ngat ;------------------------------------------------- ORG 0x0004 ;------------------------------------------------- ; Sao luu cac thanh ghi quan trong ;------------------------------------------------- MOVWF W_SAVE ; W_SAVE = W SWAPF STATUS,W CLRF STATUS MOVWF STATUS_SAVE ; STATUS_SAVE = SWAP_NIBBLE(STATUS) MOVF PCLATH, W MOVWF PCH_SAVE ; PCH_SAVE = PCLATH CLRF PCLATH ; PCLATH = 0 MOVF FSR, W MOVWF FSR_SAVE ; FSR_SAVE= FSR ;------------------------------------------------- ; Doan chuong trinh ngat bat dau tai day ;------------------------------------------------- BCF INTCON, TMR0IF ; Xoa co ngat TMR0IF COMF LED1 ;------------------------------------------------ ;------------------------------------------------- ; Ket thuc chuong trinh ngat ;------------------------------------------------- END_INT MOVF FSR_SAVE, W MOVWF FSR ;FSR=FSR_SAVE MOVF PCH_SAVE, W MOVWF PCLATH ;PCLATH = PCH_SAVE SWAPF STATUS_SAVE, W MOVWF STATUS SWAPF W_SAVE, F SWAPF W_SAVE, W RETFIE ;================================================= ;================================================= ; Chuong trinh chinh ORG 0x0000 GOTO MAIN ORG 0x0050 MAIN BSF STATUS, RP0 BCF STATUS, RP1 ; BANK1 CLRF TRISB BCF STATUS, RP0 ; BANK0 CLRF PORTB ;---------------------------------------- ; Khoi tao TIMER0 ;---------------------------------------- CLRF TMR0 BSF STATUS, RP0 ; BANK1 MOVLW b'00000001' ; Tat chuc nang dien tro keo len coa PORTB MOVWF OPTION_REG ; Chon xung dem la xung len ; Gan Prescaler cho TMR0 ; Tan so chia 1:4 BCF STATUS, RP0 ; BANK0 CLRF INTCON BSF INTCON, TMR0IE ; Cho phep ngat TMR0 BSF INTCON, PEIE ; Cho phep ngat ngoai vi BSF INTCON, GIE ; Cho phep toan bo ngat BCF LED1 GOTO $ END ;================================================= Code:
;================================================= ; Phan khoi tao PIC #include <p16F877A.inc> __CONFIG _WDT_OFF & _CP_OFF & _PWRTE_ON & _HS_OSC ;================================================= ;================================================= ; Phan dinh nghia #DEFINE LED1 PORTB, 7 #DEFINE LED2 PORTB, 6 #DEFINE LED3 PORTB, 5 #DEFINE LED4 PORTB, 4 #DEFINE LED5 PORTB, 3 #DEFINE LED6 PORTB, 2 #DEFINE LED7 PORTB, 1 #DEFINE LED8 PORTB, 0 ;================================================= ;================================================= ; Phan khai bao cac bien ;------------------------- ; Bien nam o Bank 0 ;------------------------- ORG 0x0A0 W_SAVE RES 1 STATUS_SAVE RES 1 PCH_SAVE RES 1 FSR_SAVE RES 1 VARIABLE_A RES 1 ;================================================= ;================================================= ;------------------------------------------------- ; Chuong trinh ngat ;------------------------------------------------- ORG 0x0004 ;------------------------------------------------- ; Sao luu cac thanh ghi quan trong ;------------------------------------------------- MOVWF W_SAVE ; W_SAVE = W SWAPF STATUS,W CLRF STATUS MOVWF STATUS_SAVE ; STATUS_SAVE = SWAP_NIBBLE(STATUS) MOVF PCLATH, W MOVWF PCH_SAVE ; PCH_SAVE = PCLATH CLRF PCLATH ; PCLATH = 0 MOVF FSR, W MOVWF FSR_SAVE ; FSR_SAVE= FSR ;------------------------------------------------- ; Doan chuong trinh ngat bat dau tai day ;------------------------------------------------- BCF INTCON, TMR0IF ; Xoa co ngat TMR0IF MOVLW VARIABLE_A SUBLW 0xFF ; Dao trang thai PORTB BCF STATUS, RP0 BCF STATUS, RP1 ; BANK0 MOVWF PORTB ; 0xFF - W -> W -> PORTB ;------------------------------------------------ ;------------------------------------------------- ; Ket thuc chuong trinh ngat ;------------------------------------------------- END_INT MOVF FSR_SAVE, W MOVWF FSR ;FSR=FSR_SAVE MOVF PCH_SAVE, W MOVWF PCLATH ;PCLATH = PCH_SAVE SWAPF STATUS_SAVE, W MOVWF STATUS SWAPF W_SAVE, F SWAPF W_SAVE, W RETFIE ;================================================= ;================================================= ; Chuong trinh chinh ORG 0x0000 GOTO MAIN ORG 0x0050 MAIN BSF STATUS, RP0 BCF STATUS, RP1 ; BANK1 CLRF TRISB BCF STATUS, RP0 ; BANK0 CLRF PORTB ;---------------------------------------- ; Khoi tao TIMER0 ;---------------------------------------- CLRF TMR0 BSF STATUS, RP0 ; BANK1 MOVLW b'00000001' ; Tat chuc nang dien tro keo len coa PORTB MOVWF OPTION_REG ; Chon xung dem la xung len ; Gan Prescaler cho TMR0 ; Tan so chia 1:4 BCF STATUS, RP0 ; BANK0 CLRF INTCON BSF INTCON, TMR0IE ; Cho phep ngat TMR0 BSF INTCON, PEIE ; Cho phep ngat ngoai vi BSF INTCON, GIE ; Cho phep toan bo ngat MOVLW 0x00; MOVWF VARIABLE_A ; Luu trang thai cac LED GOTO $ END ;================================================= thay đổi nội dung bởi: namqn, 13-03-2010 lúc 10:06 PM. Lý do: định dạng code |
![]() |
![]() |
Ðiều Chỉnh | |
Xếp Bài | |
|
|