![]() |
|
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 |
![]() |
#76 | |
Trưởng lão PIC bang
|
Trích:
Hiện tượng này giống như chân MCLR bị thả nổi. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 thay đổi nội dung bởi: namqn, 03-03-2007 lúc 11:28 PM. |
|
![]() |
![]() |
![]() |
#77 |
Đệ tử 7 túi
|
ô là la mới mua nhầm 1 chú pic 18 thôi kệ học đại vậy, dzị mà nạp chương trình vào pic xong cho chạy chạy được 1 nhịp rồi nín khe, vịn vào nguồn cấp âm hoặc dương thì đều chạy tốt định lên hỏi mấy anh nhưng trời ơi thấy cũng giống hệt mình, mấy anh có kinh nghiệm giải quyết vụ này chỉ bảo em với (em cũng đang tìm hiểu sự cố này mặc dù nguồn đã được nắn lọc cực tốt)
namqn: đã nói trên kia rồi, có thể chân MCLR bị thả nổi. thay đổi nội dung bởi: namqn, 02-03-2007 lúc 01:57 AM. |
![]() |
![]() |
![]() |
#78 |
Đệ tử 1 túi
Tham gia ngày: Jan 2006
Bài gửi: 18
: |
Hic gặp được người đồng cảnh ngộ mừng quá
![]() Em vẫn chưa giải quyết đc cái vụ này, dù chân MCLR đã nối lên Vcc qua 1 trở 10K , làm nút reset đàng hoàng nhưng tình hình vẫn vậy, cứ chạm tay vào GND thì mới chạy bỏ ra là tịt ![]() thay đổi nội dung bởi: omen, 02-03-2007 lúc 11:10 AM. |
![]() |
![]() |
![]() |
#79 |
Đệ tử 5 túi
Tham gia ngày: Oct 2005
Bài gửi: 117
: |
Trang WEB ma ban "Le vu" đưa ra khá hay. Tôi đã lặp các mạch cho con 2550 theo như trên web và tất cả đều chạy rất tốt, code chương trinh cũng đơn giản và dễ hiểu, gúp cho người dùng dễ dàng modifê lại.
Liệt kê các Project: - Làm OSC đơn giản (tần số thấp) - Quét led RGB - Giao tiếp GLCD, làm OSC - Giao tiếp không dây chuẩn ZigBee (bộ RF-24 ở VN có ai bán ko nhỉ, giá cả ?) ... Mọi người cung tham khảo.
__________________
CallerID, Ethernet-RS232, PICWEB, Cảnh báo BTS Giải pháp toàn diện giám sát - điều khiển từ xa qua GSM/Internet 0988006696 http://linhnc308.blogspot.com linhnc308@gmail.com |
![]() |
![]() |
![]() |
#80 | |
Trưởng lão PIC bang
|
Trích:
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#81 |
Đệ tử 7 túi
|
A ha vui quá bạn omen ơi mình tìm ra nguyên nhân rồi đúng như anh linh đã nói đúng là nguyên nhân do ta khai báo config không đủ : trong các loại config sau có một cái gây ra lỗi nhưng mình hong rõ là cái nào nữa: NOBROWNOUT,NOCPD,NOWRT,NODEBUG cái này chắc phải nhờ trưởng lão giải thích hộ tụi mình thôi.
|
![]() |
![]() |
![]() |
#82 | |
Trưởng lão PIC bang
|
Trích:
NOCPD: tắt bảo vệ data EEPROM, hoàn toàn không liên quan. NOWRT: tắt bảo vệ ghi (cái này là mặc nhiên), cũng hoàn toàn không liên quan. NODEBUG: tắt bộ background debugger, cái này mà để bật thì nó sẽ đi vào chế độ gỡ rối, nghĩa là giống như đang được debug bằng ICD 2 vậy. Nếu vào chế độ stepping thì phải có lệnh từ ICD 2 nó mới chạy 1 lệnh. Chỉ thử với NODEBUG xem. Mà các bạn viết code gài kiểu này thì ai mà gỡ rối cho nổi. Quy tắc cần phát biểu ở đây: "Cấu hình đầy đủ cho chip rồi hãy thử chương trình". Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
|
![]() |
![]() |
![]() |
#83 |
Đệ tử 1 túi
Tham gia ngày: Jan 2006
Bài gửi: 18
: |
Ôi mừng quá bác namnq và bác thaithienanh ơi
![]() ![]() Tuy nhiên đó là em mới thử được trên 16F877a, chưa thử được trên 18F4550, con 18F4550 của em ... nó ... đi về nơi xa lắm rồi ![]() ![]() Bác thaithienanh thử uncheck cái LVP xem có được ko , chúc bác may mắn ![]() namqn: Ở đâu đó trên forum này tôi đã nói là dùng LVP thì phải xác định điện áp cho chân PGM (kéo nó xuống GND qua điện trở vài k), không thả nổi nó mà. Đúng là mỗi người một bệnh. thay đổi nội dung bởi: namqn, 03-03-2007 lúc 11:25 PM. |
![]() |
![]() |
![]() |
#84 |
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 |
![]() |
![]() |
![]() |
#85 |
Trưởng lão PIC bang
|
Phần code để giải mã của bạn đang nằm gần biên của các trang 256 byte. Như bạn đã cho biết, PCL = 0xF4 khi nhảy đến TABLE. Trước khi thực hiện lệnh cộng thì PCL sẽ được tăng thêm 2, cộng với giá trị mà bạn muốn giải mã là 0x0A thì bạn có thể thấy tại sao PCL = 0x00 (PCL = 0xF4 + 0x02 + 0x0A).
Bạn tìm hiểu lại về vấn đề xử lý PCH và PCL khi dùng kỹ thuật bảng. Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
#86 |
Đệ tử 5 túi
Tham gia ngày: Sep 2006
Bài gửi: 100
: |
Để sửa lỗi trên thì bạn nên sửa như sau ở đoạn Table:
org 0x100 TABLE: movlw high(TABLE) movwf PCLATH movf Count,0 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 |
![]() |
![]() |
![]() |
#87 |
Đệ tử 5 túi
Tham gia ngày: Sep 2006
Bài gửi: 100
: |
nếu còn thắc mắc gì thì cứ chat với tôi nhé, sẵn sàng giúp đỡ,
![]() |
![]() |
![]() |
![]() |
#88 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
em mới học pic18f4550 nên cũng chưa biết gì cả mong các anh chỉ giúp.
1. trong proteus em không thấy cong 18f4550 hoặc con 18f4455 đâu cả. thế để mô phỏng nó thì làm thế nào hả các bác. hay có con nào tương tự trong proteus không 2.chân rb4 mắc điện trỏ 10k lên 5v là để làm gì hả các bác. thế khi điều khiển đèn bằng portb có cần mắc con này không. 3. em viết chương trình bằng ccs 3.249. và con 18f có cần khai báo thêm device*=16 ADC = 8 có tác dụng không để dùng toàn bộ RAM không. em thấy có khai báo hay không vẫn tốn dung lượnng RAN như nhau. em viết thử 1 đoạn code điều khiển đèn nhưng không mô phỏng được và cũng chưa có mạch để text thử nên nhờ các đại ca xem thử Code:
#include <18F4550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CP UDIV1,VREGEN #device*=16 adc=8 #use delay(clock=20000000) #use fast_io(b) #byte portb=0x6 #use fast_io(a) #byte porta=0x5 unsigned char tam[] = {0X01,0X02,0X04,0X08,0X10,0X20,0X40,0X80}; main() {int i; set_tris_b(0); set_tris_a(0); while(true) { porta = 0xff; for(i=0;i<8;i++) { portb=tam[i]; delay_ms(500); } } } thay đổi nội dung bởi: namqn, 18-10-2007 lúc 05:40 PM. |
![]() |
![]() |
![]() |
#89 |
Đệ tử 6 túi
Tham gia ngày: Jul 2007
Bài gửi: 154
: |
đã có mạch tẽt thủ nhưng không thấy chạy gì cả không biết có phải config sai không. mạch text thì em dùng mạch của của con 16f877a chạy tốt và chỉ thêm mấy cái tụ 104 và 5v và mass thôi.
xin mấy đại ca chỉ giáo |
![]() |
![]() |
![]() |
#90 |
Nhập môn đệ tử
Tham gia ngày: Oct 2007
Bài gửi: 9
: |
song song --> noi tiep
mấy anh chỉ hộ em mấy con IC chuyển song song --> nối tiếp với.
//====================================== dạng vào n bit -->lock n bit--> clock out 1 em đang cần con này để trị thằng 595. |
![]() |
![]() |
![]() |
|
|
![]() |
||||
Ðề 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 |