PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Bootloaders - Programmers - Debuggers - Emulators

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

Bootloaders - Programmers - Debuggers - Emulators Những công cụ cần thiết để lập trình cho PIC/dsPIC

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 12-09-2007, 05:30 PM   #1
LeDuc
Đệ tử 6 túi
 
LeDuc's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 150
:
tiny bootloader for 16f887

Xin giúp em với.
Em đang làm một mạch ứng dụng sử dụng con pic 16f887, mạch thì đã xong rồi nhưng nạp bằng tinybootloader hoài mà vẫn ko được, mỗi lần nạp đều báo là ko tìm thấy pic, có ai gặp lỗi này chưa vậy? giúp em khắc phục với.
Em sử dụng trình biên dịch CCS 4.0.. mạch tiny bootloader giống như sơ đồ của anh F , em đã kiển tra nhiều lần nhưng vẩn ko nạp được mong các huynh giúp đỡ giùm..
Thanks for all ...
__________________
_________________________________________________
Le Trung Duc
Industry Research & Application Center
NTT Institute of Hi_technolog
ltduc@ntt.edu.vn
leduc_cktd@yahoo.com.vn
http://www.nttc.edu.vn
CNC DIY : http://quangcaosanpham.com/shop/driverservo
0909300332
LeDuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 12-09-2007, 10:34 PM   #2
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
Bạn thiết lập phần mềm giao tiếp trên host PC ra sao (nên chụp hình và post lên)? Firmware do bạn tự viết hay lấy ở đâu? Nếu firmware do bạn tự viết thì phần code thiết lập cho USART ra sao? Nếu bạn lấy từ chỗ khác thì cho biết link để chúng tôi xem lại cấu hình.

Bạn phải kiểm tra các tham số của cả hai bên (host PC và firmware) cho tương thí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
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-09-2007, 12:39 AM   #3
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
Trích:
Nguyên văn bởi namqn View Post
Bạn thiết lập phần mềm giao tiếp trên host PC ra sao (nên chụp hình và post lên)? Firmware do bạn tự viết hay lấy ở đâu? Nếu firmware do bạn tự viết thì phần code thiết lập cho USART ra sao? Nếu bạn lấy từ chỗ khác thì cho biết link để chúng tôi xem lại cấu hình.

Bạn phải kiểm tra các tham số của cả hai bên (host PC và firmware) cho tương thích.

Thân,
Thú thật cái này hồi bữa em cũng có làm thử một lần như không đuợc, lỗi y chang như bạn LEDUC vậy, nên em bỏ luôn không dùng nó nữa. Tài liệu về nó trên diễn đàn mình còn lấn cấn quá, mong anh Namq khi nào rảnh rỗi giúp tụi em một bài hướng dẫn rõ hơn để Tiny Bootloader đuợc sử dụng phổ biến hơn (vì em nghĩ nó rất hay và hữu ích ), cả một số fimware chuẩn cho PIC luôn cho khỏi phải nghi ngờ là : "cái này không biết đã tốt chưa ?"

Thân.
__________________
_____________________________Tri nhân tri tự bất tri tâm_____________________________
_ _ _ _ _ _ _ _ Yêu mến tất cả anh em Picvietnam.com _ _ _ _ _ _ _ _
. . . . . . . . . . . . . . . . Để post đuợc một câu hỏi rõ ràng xin tham khảo link sau : . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . http://www.picvietnam.com/forum/showthread.php?t=1263. . . . . . . . . . . . . . . .
thaithienanh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-09-2007, 07:05 PM   #4
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 LeDuc View Post
Xin giúp em với.
Em đang làm một mạch ứng dụng sử dụng con pic 16f887, mạch thì đã xong rồi nhưng nạp bằng tinybootloader hoài mà vẫn ko được, mỗi lần nạp đều báo là ko tìm thấy pic, có ai gặp lỗi này chưa vậy? giúp em khắc phục với.
Em sử dụng trình biên dịch CCS 4.0.. mạch tiny bootloader giống như sơ đồ của anh F , em đã kiển tra nhiều lần nhưng vẩn ko nạp được mong các huynh giúp đỡ giùm..
Thanks for all ...
Tôi hỏi thêm một câu ngớ ngẩn: bạn đã nạp firmware vào PIC16F887 của bạn chưa?

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 14-09-2007, 02:03 PM   #5
LeDuc
Đệ tử 6 túi
 
LeDuc's Avatar
 
Tham gia ngày: Mar 2007
Bài gửi: 150
:
Trích:
Nguyên văn bởi namqn View Post
Tôi hỏi thêm một câu ngớ ngẩn: bạn đã nạp firmware vào PIC16F887 của bạn chưa?

Thân,
Hic nói một câu hơi chuối :" em ko biết chụp lai hình và post lên cho bà con xem ".
Em đã nạp firmware rồi ,firmware co sẵng trong phần tinybootloader mà em dow về.
Em viết bằng trình dịch CCS kô biết ai có thể chỉ dẩn viết firmware bằng C ko ? ASM thi em pó tay ,khi nạp firmware vào pic em ko biết có đúng nữa ko? Đành phải về tự mò thêm nữa , có gì mong anh em chỉ giúp em thêm.
Cho em hỏi một câu hơi chuối nữa nha ,mỗi lần muốn nạp pic bằng tiny bootloader ta đều phải nạp firmware hết phải ko? giống như AVR vậy phải ko?
THANKS ALL....
__________________
_________________________________________________
Le Trung Duc
Industry Research & Application Center
NTT Institute of Hi_technolog
ltduc@ntt.edu.vn
leduc_cktd@yahoo.com.vn
http://www.nttc.edu.vn
CNC DIY : http://quangcaosanpham.com/shop/driverservo
0909300332
LeDuc vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 14-09-2007, 05:40 PM   #6
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 LeDuc View Post
Hic nói một câu hơi chuối :" em ko biết chụp lai hình và post lên cho bà con xem ".
Em đã nạp firmware rồi ,firmware co sẵng trong phần tinybootloader mà em dow về.
Em viết bằng trình dịch CCS kô biết ai có thể chỉ dẩn viết firmware bằng C ko ? ASM thi em pó tay ,khi nạp firmware vào pic em ko biết có đúng nữa ko? Đành phải về tự mò thêm nữa , có gì mong anh em chỉ giúp em thêm.
Cho em hỏi một câu hơi chuối nữa nha ,mỗi lần muốn nạp pic bằng tiny bootloader ta đều phải nạp firmware hết phải ko? giống như AVR vậy phải ko?
THANKS ALL....
Theo tôi biết thì các bản Tiny Bootloader do Claudiu đưa lên internet không có tập tin .hex hay mã nguồn firmware cho PIC16F887. Vậy bạn đã dùng firmware nào để nạp cho PIC16F887 của bạn, và bạn dùng phần mềm và mạch nạp nào để nạp firmware vào PIC16F887?

Chương trình ứng dụng của bạn có thể viết trong C hay hợp ngữ, còn firmware cho PIC thì nên viết bằng hợp ngữ cho nhỏ gọn. Đề nghị bạn đọc thêm về bootloader cho PIC, vì có vẻ như bạn chưa hiểu rõ về nó.

Nếu dùng bootloader thì firmware cho bootloader chỉ cần nạp vào PIC lần đầu tiên, sau đó bootloader sẽ chịu trách nhiệm nạp chương trình ứng dụng mới vào PIC mỗi khi cần thay đổi chương trình ứng dụ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 25-11-2008, 08:19 PM   #7
ball
Nhập môn đệ tử
 
Tham gia ngày: May 2008
Bài gửi: 2
:
Bootloader for 16f887

Chao anh NAM
em tim tren mang duoc chuong trinh bootloader cho pic 16f887 nhung em muon cau hinh cho cac thong so sau
thach anh 20MHZ
baudrate 9600
anh co the chinh sua giup em
cam on anh
day la chuong trinh



radix DEC
LIST P=16F887, F=INHX8M ; change also: Configure->SelectDevice from Mplab

; auto-start at 4MHz internal osc
xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200
;xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
;baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200

; The above 3 lines can be changed and buid a bootloader for the desired frequency (and PIC type)

;************************************************* *******************
; Tiny Bootloader 16FxxxA series Size=100words
; claudiu.chiculita@ugal.ro
; http://www.etc.ugal.ro/cchiculita/so...bootloader.htm
;************************************************* *******************

#include "../icdpictypes.inc" ;takes care of: #include "p16fxxxA.inc", max_flash, IdTypePIC
#include "../spbrgselect.inc"
#include "../bankswitch.inc"
#define first_address max_flash-100 ; 100 word in size

__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT
__CONFIG _CONFIG2, _WRT_OFF & _BOR21V

errorlevel 1, -305 ; suppress warning msg that takes f as default


cblock 0x20
buffer:80
endc

cblock 0x78
crc
contor
i
cnt1
cnt2
cnt3
flag
endc


SendL macro car
movlw car
movwf TXREG
endm

;0000000000000000000000000 RESET 00000000000000000000000000

ORG 0x0000
PAGESEL IntrareBootloader
GOTO IntrareBootloader

;view with TabSize=4
;&&&&&&&&&&&&&&&&&&&&&&& START &&&&&&&&&&&&&&&&&
;---------------------- Bootloader ----------------------
;
;PC_flash: C1h AddrH AddrL nr ...(DataLo DataHi)... crc
;PIC_response: id K K


ORG first_address
nop
nop
nop
nop
org first_address+4
IntrareBootloader
;init serial port
clrf STATUS
bsf STATUS,RP0 ;BANK1_
movlw b'00100100'
movwf TXSTA
movlw spbrg_value
movwf SPBRG
BANK0_
movlw b'10010000'
movwf RCSTA
;wait for computer
call Receive
sublw 0xC1 ;Expect C1
skpz
goto way_to_exit
SendL IdTypePIC ;PIC type
;SendL IdSoftVer ;firmware ver x
MainLoop
clrf STATUS ;bank0
SendL 'K'
mainl
clrf crc
call Receive ;H
bsf STATUS,RP1 ;bank2
movwf EEADRH
movwf flag ;used to detect if is eeprom
call Receive ;L
bsf STATUS,RP1 ;bank2
movwf EEADR

call Receive ;count
movwf contor
movwf i
incf i
movlw buffer-1
movwf FSR
rcvoct
call Receive
incf FSR
movwf INDF
decfsz i
goto rcvoct

movf crc,f ;check checksum
skpz
goto ziieroare
;write
bsf STATUS,RP1 ;bank switch 0->2
movlw buffer
movwf FSR
writeloop ; write 2 bytes = 1 instruction
clrwdt
movf INDF,w
movwf EEDATA
incf FSR
movf INDF,w
movwf EEDATH
incf FSR
BANK3_ ;bank 2->3
bcf EECON1,EEPGD
btfss flag,6 ;is eeprom (or flash)
bsf EECON1,EEPGD
bsf EECON1,WREN
movlw 0x55
movwf EECON2
movlw 0xaa
movwf EECON2
bsf EECON1,WR
nop
nop
waitwre
; btfsc EECON1,WR ;for eeprom writes (wait to finish write)
; goto waitwre
bcf EECON1,WREN
BANK2_ ;bank2
incf EEADR ;does not cross zones
btfss flag,6 ; if writing to EEPROM, skip first counter dec.
decf contor
decfsz contor
goto writeloop

goto MainLoop
ziieroare
SendL 'N'
goto mainl


Receive
clrf STATUS
movlw xtal/2000000+1 ; for 20MHz => 11 => 1second
movwf cnt1
rpt2
clrf cnt2
rpt3
clrf cnt3
rptc
btfss PIR1,RCIF ;test RX
goto $+4
movf RCREG,w ;return in W
addwf crc,f ;compute checksum
return
clrwdt
decfsz cnt3
goto rptc
decfsz cnt2
goto rpt3
decfsz cnt1
goto rpt2
;timeout:
way_to_exit ;exit in all other cases; must be BANK0/1
;BANK0_
bcf RCSTA, SPEN ; deactivate UART
goto first_address
;************************************************* ************
; After reset
; Do not expect the memory to be zero,
; Do not expect registers to be initialised like in catalog.

END
ball vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-11-2008, 08:48 PM   #8
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 ball View Post
Chao anh NAM
em tim tren mang duoc chuong trinh bootloader cho pic 16f887 nhung em muon cau hinh cho cac thong so sau
thach anh 20MHZ
baudrate 9600
anh co the chinh sua giup em
cam on anh
day la chuong trinh



radix DEC
LIST P=16F887, F=INHX8M ; change also: Configure->SelectDevice from Mplab

; auto-start at 4MHz internal osc
xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200
;xtal EQU 4000000 ; you may also want to change: _HS_OSC _XT_OSC
;baud EQU 19200 ; standard TinyBld baud rates: 115200 or 19200

; The above 3 lines can be changed and buid a bootloader for the desired frequency (and PIC type)
...
Như Claudiu đã chú thích, bạn có thể chỉnh sửa 3 dòng trên để có các cấu hình mong muốn. Như vậy, với trường hợp của bạn, muốn dùng thạch anh tần số 20 MHz với baudrate 9600 bps, cần chỉnh các dòng trên để có:
Code:
	xtal EQU 20000000
	baud EQU 9600
Chú ý chỉnh dòng cấu hình cho CONFIG1 phía dưới thành:
Code:
	__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_OFF & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC
Bạn nhớ lần sau viết bài bằng tiếng Việt có dấu, để tránh bài viết được đưa vào thùng rác.

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 25-11-2008, 08:55 PM   #9
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 namqn View Post
Theo tôi biết thì các bản Tiny Bootloader do Claudiu đưa lên internet không có tập tin .hex hay mã nguồn firmware cho PIC16F887. ...
Từ phiên bản 1.9.7 (tháng 05/2008), mã nguồn firmware mẫu cho PIC16F88x đã được gộp vào tập tin nguồn được download. Phát biểu trên của tôi vẫn đúng tại thời điểm thảo luận.

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 21-02-2009, 03:17 PM   #10
lexuantien
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Nơi Cư Ngụ: Qui Nhon - Binh Dinh
Bài gửi: 37
:
Send a message via Yahoo to lexuantien
em mới học VDK thôi , các bác cho em hỏi cái firmware là cái gì của pic? . Tại sao mình phải nạp vào con pic để làm gì ạ . Con về cái Bootlootder là gì ? , mong các bác chi giáo cho đệ tử ngu muội này.
lexuantien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-02-2009, 09:23 PM   #11
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 lexuantien View Post
em mới học VDK thôi , các bác cho em hỏi cái firmware là cái gì của pic? . Tại sao mình phải nạp vào con pic để làm gì ạ . Con về cái Bootlootder là gì ? , mong các bác chi giáo cho đệ tử ngu muội này.
Firmware là chương trình được viết cho vi điều khiển, dùng để thực hiện một chức năng điều khiển nào đó. Bất kỳ vi điều khiển PIC nào cũng cần một chương trình (firmware) để thực hiện nhiệm vụ điều khiển được đặt ra, vì các vi điều khiển PIC mới xuất xưởng thường có bộ nhớ chương trình trắng (tức là gồm các ô nhớ chứa các lệnh NOP-không làm gì cả).

Bạn xem luồng này về các khái niệm liên quan đến bootloader:
http://www.picvietnam.com/forum/showthread.php?t=130

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 24-02-2009, 10:27 AM   #12
lexuantien
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Nơi Cư Ngụ: Qui Nhon - Binh Dinh
Bài gửi: 37
:
Send a message via Yahoo to lexuantien
Cho e hỏi tiếp vậy Firmware có phải là mình lập trình rồi nó sẽ được ghi vào VDK không ?

Cảm ơn bác namqn . e cũng được biết nếu mình dùng Bootloader thì mình dùng con Max232 nạp thẳng trực tiếp vào vi điều khiển không cần nạp qua mạch nạp đúng ko ạ !. cho e hỏi nếu mà mình dùng con Max232 thì dùng con RS232 để làm chi ? . E đọc Datasheet thấy nó giống cổng COM , vậy chắc là mình nạp qua cống USB được không hả bác?. Mong bác chỉ giáo cho e .Cảm ơn bác.
lexuantien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-02-2009, 04:52 PM   #13
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 lexuantien View Post
Cho e hỏi tiếp vậy Firmware có phải là mình lập trình rồi nó sẽ được ghi vào VDK không ?

Cảm ơn bác namqn . e cũng được biết nếu mình dùng Bootloader thì mình dùng con Max232 nạp thẳng trực tiếp vào vi điều khiển không cần nạp qua mạch nạp đúng ko ạ !. cho e hỏi nếu mà mình dùng con Max232 thì dùng con RS232 để làm chi ? . E đọc Datasheet thấy nó giống cổng COM , vậy chắc là mình nạp qua cống USB được không hả bác?. Mong bác chỉ giáo cho e .Cảm ơn bác.
Đúng là bạn viết chương trình cho PIC trên một môi trường phát triển nào đó, rồi dịch ra mã máy của PIC (bây giờ nó được gọi là firmware), sau đó ghi vào PIC.

Con MAX232 và con RS232 của bạn khác nhau ra sao?

Tại sao nó giống cổng COM thì lại nạp qua cổng USB được?

Bootloader dùng một phương pháp truyền thông nào đó (RS-232, I2C, SPI, USB, ...) để gửi firmware của chương trình ứng dụng từ host đến PIC. Sau đó PIC sẽ tự ghi firmware này vào bộ nhớ chương trình và thực thi firmware mới (điều kiện tiên quyết để sử dụng bootloader là PIC phải có khả năng tự ghi vào bộ nhớ chương trình, không phải PIC nào cũng có khả năng này).

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 25-02-2009, 01:30 PM   #14
lexuantien
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Nơi Cư Ngụ: Qui Nhon - Binh Dinh
Bài gửi: 37
:
Send a message via Yahoo to lexuantien
Em hiểu rồi . Vậy Pic 16F877A có thể tự ghi vào bộ nhớ chương trình không hả bác ? Em mới tìm hiểu con này à.mới tìm hiểu con này à.
lexuantien vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-02-2009, 01:53 PM   #15
lexuantien
Đệ tử 2 túi
 
Tham gia ngày: Feb 2009
Nơi Cư Ngụ: Qui Nhon - Binh Dinh
Bài gửi: 37
:
Send a message via Yahoo to lexuantien
Đây là chương trình dùng ngắt Timer0 định thì 1s.
Đầu tiên led ở chân RB0 sáng, sau 1s sẽ dịch sang trái, nghĩa là led 1 trên chân RB1 sáng , lần lượt như vậy cho các led trên portB và lặp lại mãi mãi. Em có đoạn code sau:


Code:
#include <16F877A.h>
#fuses NOWDT,PUT,XT,NOPROTECT
#use delay(clock=4000000)
#byte PORTB = 0x06

int16 count;
int8 a;
//Chuong trinh ngat TMR0
#int_timer0
void interrupt_timer0()
{
  set_timer0(6);
  ++count;
  if(count == 2000)  // 2000*500us = 500000us = 1s
      {
        count=0;
        rotate_left(&a,1);
      }
}
//Chuong trinh chinh
void main(void)
{
  set_tris_b(0);
  enable_interrupts(int_timer0);
  setup_timer_0(RTCC_INTERNAL|RTCC_DIV_2); 
  enable_interrupts(global);
  set_timer0(6);// T_dinhthi = 2*(256 - 6)*1us = 500us
  a = 0x01;
  
  while(true)
  {
      PORTB = a;
  }
}
Em không hiểu.
int16 count;
int8 a;
có ý nghĩa là gì?
còn set_timer0(6); là gì ? Đáng lẽ ra là phải set_timer0(8); chứ , do set_timer0(value); là xác định giá trị ban đầu (8bit) cho timer0.

thay đổi nội dung bởi: namqn, 25-02-2009 lúc 04:19 PM.
lexuantien 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


Múi giờ GMT. Hiện tại là 02:56 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