![]() |
|
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 |
|
![]() |
#1 |
Đệ tử 9 túi
|
Hex file ngắt ngoài RB0
:020000040000fa
:020000002028b6 :080008000528f1000308f200d5 :100010000a08f3008b10a00a0a302002031c1128e2 :10002000152820088020880009000a3080208800d8 :10003000090073088a0072088300f10e710e09002e :1000400003138316ff3086008801011383128b1778 :0c0050000b16a0010030802088002d2835 :1001000082073f3406345b344f3466346d347d34bb :0801100007347f346f34003422 :02400e00323f3f :00000001ff
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
![]() |
#2 |
Đệ tử 9 túi
|
Ngắt ngoài với RB4 đến RB7
Đấy là chương trình quét 16 phím bấm hiển thị lên LED 7 đoạn các số từ 0 đến 9 và các chữ A,b,C,d,E,F.
Xem hình ở file đính kèm! Code:
;======================================== ;Auhor: NHH ;Date: 02/03/06 ;Hardware: PIC16F877A connect PORTB by R220 ;======================================== TITLE "Giai ma ban phim dung interrupt RB4...RB7" PROCESSOR PIC16f877A INCLUDE<P16f877A.inc> __CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _HS_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF ;======================================== COUNT EQU 0x20 w_temp EQU 0x71 ; variable used for context saving status_temp EQU 0x72 ; variable used for context saving pclath_temp EQU 0x73 ; variable used for context saving ;============================================================================= ;CHUONG TRINH CHINH ;============================================================================= ORG 0000h GOTO MAIN ORG 0004h GOTO INTERRUPT ;==============================INTERRUPT PROGRAM=========================== INTERRUPT movwf w_temp ; save off current W register contents movf STATUS,w ; move status register into W register movwf status_temp ; save off contents of STATUS register movf PCLATH,w ; move pclath register into w register movwf pclath_temp ; save off contents of PCLATH register ;****************************************************************************** BCF INTCON,RBIF MOVLW b'00000001' MOVWF PORTB BTFSS PORTB,4 GOTO DIS_1 MOVLW d'0' ;0 CALL TABLE MOVWF PORTC retfie DIS_1 BTFSS PORTB,5 GOTO DIS_2 MOVLW d'1' ;1 CALL TABLE MOVWF PORTC retfie DIS_2 BTFSS PORTB,6 GOTO DIS_3 MOVLW d'2' ;2 CALL TABLE MOVWF PORTC retfie DIS_3 BTFSS PORTB,7 GOTO DIS_4 MOVLW d'3' ;3 CALL TABLE MOVWF PORTC retfie DIS_4 MOVLW b'00000010' MOVWF PORTB BTFSS PORTB,4 GOTO DIS_5 MOVLW d'4' ;4 CALL TABLE MOVWF PORTC retfie DIS_5 BTFSS PORTB,5 GOTO DIS_6 MOVLW d'5' ;5 CALL TABLE MOVWF PORTC retfie DIS_6 BTFSS PORTB,6 GOTO DIS_7 MOVLW d'6' ;6 CALL TABLE MOVWF PORTC retfie DIS_7 BTFSS PORTB,7 GOTO DIS_8 MOVLW d'7' ;7 CALL TABLE MOVWF PORTC retfie DIS_8 MOVLW b'00000100' MOVWF PORTB BTFSS PORTB,4 GOTO DIS_9 MOVLW d'8' ;8 CALL TABLE MOVWF PORTC retfie DIS_9 BTFSS PORTB,5 GOTO DIS_A MOVLW d'9' ;9 CALL TABLE MOVWF PORTC retfie DIS_A BTFSS PORTB,6 GOTO DIS_b MOVLW d'11' ;A CALL TABLE MOVWF PORTC retfie DIS_b BTFSS PORTB,7 GOTO DIS_C MOVLW d'12' ;b CALL TABLE MOVWF PORTC retfie DIS_C MOVLW b'00001000' MOVWF PORTB BTFSS PORTB,4 GOTO DIS_d MOVLW d'13' ;C CALL TABLE MOVWF PORTC retfie DIS_d BTFSS PORTB,5 GOTO DIS_E MOVLW d'14' ;d CALL TABLE MOVWF PORTC retfie DIS_E BTFSS PORTB,6 GOTO DIS_F MOVLW d'15' ;E CALL TABLE MOVWF PORTC retfie DIS_F BTFSS PORTB,7 GOTO $+4 MOVLW d'16' ;F CALL TABLE MOVWF PORTC retfie ;****************************************************************************** movf pclath_temp,w ; retrieve copy of PCLATH register movwf PCLATH ; restore pre-isr PCLATH register contents movf status_temp,w ; retrieve copy of STATUS register movwf STATUS ; restore pre-isr STATUS register contents swapf w_temp,f swapf w_temp,w ; restore pre-isr W register contents retfie ; return from interrupt ;============== CHUONG TRINH CHINH=============== MAIN BCF STATUS,RP1 BSF STATUS,RP0 ; chon BANK 1 MOVLW b'11110000' ;RB0=Input MOVWF TRISB CLRF TRISC BCF STATUS,RP0 ; chon BANK 0 BSF INTCON,GIE BSF INTCON,RBIE ;cho phep ngat RB4...RB7 MOVLW d'10' CALL TABLE MOVWF PORTC LOOP MOVLW b'00001111' MOVWF PORTB GOTO LOOP ;---------------------------------------------------------- ; Bang tra ve Digital tu 0 den 9 va A....F ; Chi so dau truy cap la 0 ; Bang o PAGE 0 ORG 0x90 TABLE ;---------------------------------------------------------- ADDWF PCL, F ; bat dau tai 0x80 RETLW b'00111111' ; 0 RETLW b'00000110' ; 1 RETLW b'01011011' ; 2 RETLW b'01001111' ; 3 RETLW b'01100110' ; 4 RETLW b'01101101' ; 5 RETLW b'01111101' ; 6 RETLW b'00000111' ; 7 RETLW b'01111111' ; 8 RETLW b'01101111' ; 9 RETLW b'00000000' ; NODISPLAY RETLW b'01110111' ; A RETLW b'01111100' ; B RETLW b'00111001' ; C RETLW b'01011110' ; d RETLW b'01111001' ; E RETLW b'01110001' ; F END
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 thay đổi nội dung bởi: nhh, 09-03-2006 lúc 12:12 PM. |
![]() |
![]() |
![]() |
#3 |
Đệ tử 9 túi
|
![]() Code:
:020000040000FA :020000007A285C :080008000528F1000308F200D5 :100010000A08F3000B1001308600061E132800307A :10002000902087000900861E192801309020870043 :100030000900061F1F280230902087000900861F34 :100040002528033090208700090002308600061E14 :100050002D280430902087000900861E33280530A3 :10006000902087000900061F39280630902087005D :100070000900861F3F2807309020870009000430C0 :100080008600061E47280830902087000900861E3B :100090004D280930902087000900061F53280B3097 :1000A000902087000900861F59280C309020870077 :1000B000090008308600061E61280D309020870058 :1000C0000900861E67280E30902087000900061F51 :1000D0006D280F30902087000900861F722810308D :1000E00090208700090073088A0072088300F10ECF :1000F000710E090003138316F03086008701831206 :100100008B178B150A30902087000F3086008528CA :1001200082073F3406345B344F3466346D347D349B :1001300007347F346F34003477347C3439345E34A0 :040140007934713469 :02400E00323F3F :00000001FF ![]()
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |
CCS C for PIC16F877A | nhh | Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) | 405 | 24-04-2008 12:00 PM |