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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 28-02-2007, 05:31 PM   #76
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi omen View Post
Em đã thử chương trình của bác namnq, mạch có chạy , 2 đèn sáng mỗi lần, nhưng mỗi đèn sáng tầm 15s mới chịu tắt

Một điều kì lạ là nếu em 1 tay sờ vào vỏ hộp nguồn ( em dùng nguồn pc để cấp điện) 1 tay sờ vào board mạch thì nó lại nhấp nháy đc led( code nhấp nháy led ko phải knighrider), thả ra lại hết đèn sáng ko nhấp, thử dùng nguồn khác ( nguồn usb ) thì cũng tương tự, 1 tay chạm vào vỏ máy, 1 tay chạm vào board mạch thì mạch lại chạy .
Em đã thử cả trên board cắm lẫn board hàn, cả PIC18f4550 lẫn 16f877A, không hiểu nó cảm ứng kiểu gì, em đã cấp nguồn âm dương đầy đủ cho nó.
Tôi quên thêm đoạn code set up tần số cho bộ dao động nội, nên nó chạy ở tần số mặc định thay vì 8 MHz như dự định (thực hiện OR thanh ghi OSCCON với 0x70 để có tần số bộ dao động nội là 8 MHz). (Đã sửa ở post gốc)

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.
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 01-03-2007, 10:06 PM   #77
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
ô 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.
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2007, 10:51 AM   #78
omen
Đệ 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.
omen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2007, 01:34 PM   #79
linhnc308
Đệ 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
linhnc308 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2007, 07:14 PM   #80
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi omen View Post
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
Liệu trong số những bạn đang gặp trường hợp này có ai có nguồn accu 6V hay 12V không? Nếu bạn nào có thì thử xem tình trạng có thay đổi khô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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2007, 08:38 PM   #81
thaithienanh
Đệ tử 7 túi
 
thaithienanh's Avatar
 
Tham gia ngày: Jul 2006
Bài gửi: 189
:
Send a message via Yahoo to thaithienanh
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.
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2007, 09:23 PM   #82
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi thaithienanh View Post
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.
NOBROWNOUT: tắt bộ phát hiện nguồn suy giảm, cái này không có khả năng gây ra lỗi, vì nguồn tốt, và nếu nó tác động thì chỉ reset lại chip thôi.
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-03-2007, 11:55 PM   #83
omen
Đệ 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 em tìm ra rồi, đó là bỏ check cái option LVP (low voltage programming ) trong tap Setting của Winpic800 đi, thế là được, nạp xong chạy vù vù
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 ( , và thế là sẽ ko theo được luồng này nữa rồi, h chuyển qua luồng "CCS C for 16F877a" vậy

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.
omen vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 09-05-2007, 02:15 PM   #84
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
Old 09-05-2007, 07:37 PM   #85
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2007, 10:02 AM   #86
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
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
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 10-05-2007, 10:03 AM   #87
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
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 đỡ, . YM: hiendl2k42
Jerry vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-10-2007, 08:27 AM   #88
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
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);
               }
         }
   }
có chổ nào sai mong các anh chỉ giáo

thay đổi nội dung bởi: namqn, 18-10-2007 lúc 05:40 PM.
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-10-2007, 12:23 PM   #89
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
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
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-10-2007, 11:18 AM   #90
ghosttn
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.
ghosttn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


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:18 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