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 20-03-2006, 02:59 PM   #46
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Chương trình đèn giao thông tại sao bạn NHN lại tốn nhiều chân để điều khiển 2 led 7 thanh thế nhỉ? Sao bạn không dùng phương pháp quét led để quét 2 led này. Khi đó dùng 7 chânPORTD (a->g) và thêm 2 chân điều khiển nữa như vậy chỉ mất có 9 chân tất cả. Như vậy tiết kiệm các chân hơn.

Thực tế đèn giao thông này là rất đơn giản. Bạn có thể phát triển thành sơ đồ đền giao thông hiện đại mới trong thực tế không? Đứng ở ngã tư một lúc xem thế nào . Bạn đưa ra mô hình đi mình lập trình bằng HTPIC xem thế nào. Vì làm bằng ASM đúng là mình mệt lắm.

chúc mọi người thành công.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-03-2006, 05:56 PM   #47
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Cảm ơn ngohaibac!

Ban đầu mình cũng nghĩ ghép chung dữ liệu cho hai led 7 seg,làm như vậy thì khi viết chương trình quét led có hơi phức tạp hơn một chút.Chương trình này mình dùng để tìm hiểu ngắt timer0 thôi chứ ko có ý định tiết kiệm chân VDK.

ngohaibac cứ mắc mạch như ntc:

Trích:
Theo mình thì nên sửa lại như thế này:

Các chân data của Led 7 đoạn, mình sẽ đưa vào PORT D.
Các chân điều khiển đèn giao thông và quét LED sẽ đưa vào PORT B luôn.
Bạn viết và post lên cho anh em học HTPIC tham khảo!

Chào!
__________________
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, 20-03-2006 lúc 06:26 PM.
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-03-2006, 06:19 PM   #48
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi ntc
Tiếc quá nhh không làm cái Timer. Nếu làm cái Timer, bạn sẽ có thêm một kinh nghiệm sương máu và một thủ thuật kinh điển khi lập trình bằng ASM. Cái kinh nghiệm này mĩnh cũng chỉ vừa mới rút ra thôi. .

Nó có liên quan tới kĩ thuật bảng.
Tuần này tớ sẽ làm cái timer để Chính phân tích những kinh nghiệm xương máu mà mình tích lũy được.
Hy vọng sớm hoàn thành!

Chào!
__________________
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
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-03-2006, 06:41 PM   #49
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Mình đã viết chương trình quét 4 led 7 thanh rùi bằng HTPIC. Tại luồng này bên dientuvietnam.net. xin mời các bạn cho ý kiến về giải thuật và cấu trúc:

http://dientuvietnam.net/forums/show...6&page=1&pp=10

Mình quen về lập trình bằng C nên có vấn đề gì về các câu lệnh về C thì các bạn cứ hỏi. Còn về ASM thì chào thua. Không dám lập trình vì dài lắm, khó chữa lỗi.

chúc các bạn thành công.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 20-03-2006, 11:52 PM   #50
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Còn về chú ý mà ntc nói thì đúng rồi. Nhưng mình hoàn toàn có thể làm được 2 công việc một lúc là vừa quét led vừa làm đầu vào Analog được. Điều này đã được nói trong App Note của bọn Microchip rồi.
Tài liệu AP557d: http://ww1.microchip.com/downloads/e...tes/00557d.pdf

Bọn này chỉ dùng có con 16C71 với 18 chân mà làm được khối việc. Anh BA đã nói đến trong bài một số kiểu tiết kiệm chân vđk rồi tại luồng
http://dientuvietnam.net/forums/showthread.php?t=5

Đây là hình vẽ minh họa:


Các bạn thấy thế nào. Mình nghĩ là nên lập một luồng để đưa lại các App Note của bọn Microchip để mọi người cùng học tập thì chắc chắn là hay hơn nhiêu. Vì bọn nó có nhiều chú ý về các vấn đề như I/O, về display led, LCD, PID, ...

Các bạn thấy thế nào?

thay đổi nội dung bởi: ngohaibac, 21-03-2006 lúc 12:18 AM.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-03-2006, 05:44 PM   #51
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Trích:
Nguyên văn bởi falleaf
Các bài viết trong luồng này rất hay, các bạn đang thảo luận về PWM, có thể nhấn thêm một bước bây giờ giả sử khi kết hợp 2 chân PWM nhưng làm xung trên 2 chân xen kẽ với nhau xem nào?

Đây có thể chỉ là một bài tập vui nhưng cũng có ứng dụng nhiều đấy.

Chúc vui.
Mình dùng ngắt để xử lý có được không anh F!
__________________
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
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-03-2006, 11:17 PM   #52
pb1
Đệ tử 2 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 31
:
Các bác cho em hỏi một tí:tại sao người ta phải sử dụng đến 10bit phân giải
CCPR1L:CCP1CON<5:4> để làm gì, mà không dùng 8 bit CCPR1L thôi?

À, còn cái này nữa. Nếu như dùng 10bit như thế thì làm thế nào để thay đổi giá trị đặt vào chúng(mục đích của em là dùng cái thằng PWM module tạo ra xung thay đổi liên tục)
Bác nào có thể giúp em tí không?

thank các bác nhiều!
pb1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-03-2006, 10:31 AM   #53
pb1
Đệ tử 2 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 31
:
em có đoạn chương trình này!

// Period of square-wave (chu kì của một sóng vuông)
/*Variables for capture and interrupt*/
static volatile bit flag=0;
static volatile unsigned int t1=0,t2=0;

void capture_setup(void)
{
CCPR1L=0; CCPR1H=0; //Clear capture registers
TMR1H=0; TMR1L=0; //Clear timer1 registers
CCP1CON = 0b00000111; //Capture every 16th rising edge on CCP1(RC2)
T1CON = 0b00100101; //Configure Timer1 module in timer mode with 1:4 prescale and start Timer1
CCP1IE=1; //Enable CCP interrupts
TMR1IE=0; //Disable Timer1 interrupts
PEIE=1;
GIE=1; //Enable global interrupts
}

static void t1func(void)
{
t1=CCPR1L;
t1+=(CCPR1H << 8);
}

static void t2func(void)
{
t2=CCPR1L;
t2+=(CCPR1H << 8);
t2-=t1;
}

static void interrupt isr(void)
{
if (CCP1IF && CCP1IE) //Clock line every 16th rising edge on CCP1IF, RC2, pin 13 on micro
{
CCP1IF=0;

if(flag==1) //Save value to t1 on every even interrupt
{
t1func();
flag = 0;
}
else //Save value to t2 on every odd interrupt
{
t2func();
flag = 1;
}
}
}
Nhà mình có bác nào dảnh thì giải thích giúp em cái này cái:
static volatile bit flag=0;
static volatile unsigned int t1=0,t2=0;
Khai báo biến kiểu này là kiểu gì thế?
pb1 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2006, 12:01 PM   #54
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
To Pb1!
Bạn đang tìm hiểu về module PWM,đây là một module cùng với ADC,...được sử dụng rất nhiều.Rất hoanh nghênh bạn nhưng trong luồng này mọi người thảo luận bằng ASM.Pb1 nên mở hẳn một luồng bàn về vấn đề này nhưng phải ở mục các ngôn ngữ lập trình khác CCS C, HTPIC,..

Tớ sẽ ủng hộ cậu mở luồng mới!
__________________
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
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2006, 12:02 PM   #55
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Digital clock

Ý tưởng viết chương trình cho cái này như sau:

Các chân a > g của led 7 đoạn nối chung dữ liệu và nối đến PortD ,các chân cathode nối đến PortB,...

> Khởi tạo các chân I/O,ngắt TMR0 1s
> Quét 6 LED,kiểm tra có bật Switch chỉnh thời gian?Nếu có thì tắt ngắt toàn cục,chỉnh xong set cờ GIE và quay lại quét LED,chờ ngắt
Khi có ngắt
> Tăng đếm LED1 lên 1,kiểm tra xem > 9 ?Chưa thì thoát ngắt,rồi thì xóa đếm LED1 về 0,tăng đếm LED2 thêm 1
> Kiểm tra đếm LED2 >6 ?Chưa thì thoát ngắt,rồi thì xóa đếm LED2 về 0,tăng đếm LED2 thêm 1
> Tiếp cho LED3,4,5
> Kiểm tra đếm LED6 = 2 & đếm LED5 > 4 ?Chưa thì thoát ngắt,rồi thì xóa đếm LED5,6 và thoát ngắt.

Viết như thế này thì hơi rắc rối và phức tạp,vừa dài,vừa dai lại vừa dở,quá nhiều nhược điểm luôn:
1.Do call,ngắt,...nếu không cẩn thận khi vào ngắt dễ bị tràn Stack thì đi tong ngay (Ban đầu mình mô phỏng Pro thì toàn hiện 0,coi lại code mờ mắt mà không phát hiện sai ở đâu cả,nhảy sang dùng PIC Sim thì bị báo tràn Stack ầm ầm luôn!Pó tay!)
2.Ngắt TMR0 bên trên chỉ rất rất gần 1s,có thể âm thầm dùng delay bù vào ở giây 60,nhưng do làm biếng tính,mình no bù!
3.Cẩn thận với ORG dành cho dữ liệu bảng,khi chương trình dài có thể chồng dữ liệu lên vùng này thì cũng đi tong luôn
4.Khi dùng bảng tra dài hơn 255,bảng đặt ở 2 page khác nhau,...cần thay đổi cách tra,cụ thể nên xem trong tutorial Kỹ thuật bảng.

He he...!Đồng hồ thời gian thực chẳng ma nào dại mà làm như thế này cả....Chỉ mỗi cái này mà loạn cả lên thì qua mấy cái module phức tạp khác,chắc ngủm khi viết bằng ASM quá!

Trên đây là những gì mình vot được, mod Chính ý kiến thế nào?Chia sẻ kinh nghiệm cho bà con tí !
__________________
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
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2006, 12:08 PM   #56
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Code:
;========================================
;Author:		NHH
;Date:		02/03/06
;Hardware:	PIC16F877A ,Crystal 4MHz
;========================================
	PROCESSOR	PIC16f877A 
	INCLUDE<P16f877A.inc> 
	__CONFIG _CP_OFF & _WDT_OFF & _BODEN_OFF & _PWRTE_ON & _XT_OSC & _WRT_OFF & _CPD_OFF &_LVP_OFF
;========================================
	COUNT		EQU	0x20
	COUNT1		EQU	0x21
	COUNT2		EQU	0x22
	COUNT3		EQU	0x23
	COUNT4		EQU	0x24
	COUNT5		EQU	0x25
	COUNT6		EQU	0x26
	COUNT7		EQU	0x27
	
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 	0x00
	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
;******************************************************************************
	DECFSZ	COUNT,F
	GOTO	CHECK
	MOVLW	d'1'
	MOVWF	COUNT	
	INCF	COUNT1,F
	GOTO	CHECK	
BACK	BCF	INTCON,TMR0IF	;xoa co ngat TMR0
;******************************************************************************
	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

CHECK	
	CALL	CHECK1
	CALL	CHECK2
	CALL	CHECK3
	CALL	CHECK4
	CALL	CHECK5
	GOTO	BACK
;==============	CHUONG TRINH CHINH===============
MAIN
	BCF 	STATUS,RP1
	BSF 	STATUS,RP0 		; chon BANK 1
	MOVLW	b'11111111'		;PORTA=Input
	MOVWF	TRISA
	MOVLW	b'00000001'		;RB0=Input
	MOVWF	TRISB
	CLRF	TRISD
;------------------------------
;Khoi tao ngat Timer0
;------------------------------
	BSF	OPTION_REG,PS0		;TMR0 rate 1: 64
	BSF	OPTION_REG,PS1
	BCF	OPTION_REG,PS2
	BCF	OPTION_REG,PSA		;Prescaler is assigned to the Timer0 module
	BCF	OPTION_REG,T0CS		
	BCF 	STATUS,RP0 		;select BANK 0

	BSF	INTCON,GIE
	BSF	INTCON,TMR0IE
	BCF	INTCON,TMR0IF

	MOVLW	d'246'
	MOVWF	COUNT
	CLRF	COUNT1
	CLRF	COUNT2
	CLRF	COUNT3
	CLRF	COUNT4
	CLRF	COUNT5
	CLRF	COUNT6
	CLRF	COUNT7
LOOP
	CALL	DISPLAY1
	CALL	DISPLAY2
	CALL	DISPLAY3
	CALL	DISPLAY4
	CALL	DISPLAY5
	CALL	DISPLAY6
	
	BTFSC	PORTB,0
	GOTO	LOOP
	GOTO	MODIFY
MODIFY
	BCF	INTCON,GIE
	
	BTFSC	PORTA,0
	GOTO	$+2
	CALL	LED34
	BTFSC	PORTA,1
	GOTO	$+2
	CALL	LED56
	BTFSS	PORTB,0
	GOTO	MODIFY
	BSF	INTCON,GIE
	GOTO	LOOP
LED34
	INCF	COUNT3,F
	MOVLW	d'10'
	SUBWF	COUNT3,W
	BTFSS	STATUS,0
	RETURN
	CLRF	COUNT3
	INCF	COUNT4,F
	MOVLW	d'6'
	SUBWF	COUNT4,W
	BTFSS	STATUS,0
	RETURN
	CLRF	COUNT4
	RETURN
LED56
	INCF	COUNT5,F
	MOVLW	d'4'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	RETURN
	MOVLW	d'2'
	SUBWF	COUNT6,W
	BTFSS	STATUS,0
	GOTO	LED5
	CLRF	COUNT6
	RETURN
	
LED5
	MOVLW	d'10'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	GOTO	MODIFY
	CLRF	COUNT5
	INCF	COUNT6,F
	GOTO	MODIFY

;============CHUONG TRINH CON===
DISPLAY1
	MOVLW	b'11111101'
	MOVWF	PORTB
	MOVF	COUNT1,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD		
	RETURN
DISPLAY2
	MOVLW	b'11111011'
	MOVWF	PORTB
	MOVF	COUNT2,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY3
	MOVLW	b'11110111'
	MOVWF	PORTB
	MOVF	COUNT3,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY4
	MOVLW	b'11101111'
	MOVWF	PORTB
	MOVF	COUNT4,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY5
	MOVLW	b'11011111'
	MOVWF	PORTB
	MOVF	COUNT5,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN
DISPLAY6
	MOVLW	b'10111111'
	MOVWF	PORTB
	MOVF	COUNT6,W
	CALL	TABLE
	MOVWF	PORTD
	CALL	DECREATE
	CLRF	PORTB
	CLRF	PORTD
	RETURN

DECREATE
	DECFSZ	COUNT7
	GOTO	DECREATE
	RETURN

;........................................................
CHECK1
	MOVLW	d'10'
	SUBWF	COUNT1,W
	BTFSS	STATUS,0
	GOTO	BACK
	CLRF	COUNT1
	INCF	COUNT2,F
	RETURN
CHECK2
	MOVLW	d'6'
	SUBWF	COUNT2,W
	BTFSS	STATUS,0
	GOTO	BACK
	CLRF	COUNT2
	INCF	COUNT3,F
	RETURN
CHECK3
	MOVLW	d'10'
	SUBWF	COUNT3,W
	BTFSS	STATUS,0
	GOTO	BACK
	CLRF	COUNT3
	INCF	COUNT4,F
	RETURN
CHECK4
	MOVLW	d'6'
	SUBWF	COUNT4,W
	BTFSS	STATUS,0
	GOTO	BACK	
	CLRF	COUNT4
	INCF	COUNT5,F
	RETURN
CHECK5
	MOVLW	d'10'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	GOTO	BACK	
	CLRF	COUNT5
	INCF	COUNT6,F
	RETURN
CHECK6
	INCF	COUNT5,F
	MOVLW	d'4'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	RETURN
	MOVLW	d'2'
	SUBWF	COUNT6,W
	BTFSS	STATUS,0
	CALL	LED_5
	CLRF	COUNT6
	RETURN
	
LED_5
	MOVLW	d'10'
	SUBWF	COUNT5,W
	BTFSS	STATUS,0
	RETURN
	CLRF	COUNT5
	INCF	COUNT6,F
	RETURN
;----------------------------------------------------------

; Bang tra ve Digital tu 0 den 9 va OFF
; Chi so dau truy cap la 0
; Bang o PAGE 0

	ORG 07F0h
TABLE
;----------------------------------------------------------
	ADDWF 	PCL, F 			; bat dau tai 0x90
	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'00111111' 		; 0
		
	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
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2006, 12:09 PM   #57
nhh
Đệ tử 9 túi
 
nhh's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 174
:
Send a message via Yahoo to nhh
Code:
:020000040000FA
:020000001E28B8
:080008000528F1000308F200D5
:100010000A08F300A00B18280130A000A10A182834
:100020000B1173088A0072088300F10E710E09002B
:10003000A320AA20B120B820BF20102803138316C4
:10004000FF30850001308600880101148114011100
:100050008111811283128B178B160B11F630A000C1
:10006000A101A201A301A401A501A601A7016A2083
:1000700073207C2085208E20972006183728402862
:100080008B13051844284B20851847285820061C38
:1000900040288B173728A30A0A302302031C0800C4
:1000A000A301A40A06302402031C0800A4010800CE
:1000B000A50A04302502031C080002302602031C96
:1000C0006328A60108000A302502031C4028A50168
:1000D000A60A4028FD3086002108F0278800A020CD
:1000E000860188010800FB3086002208F02788007E
:1000F000A020860188010800F73086002308F02739
:100100008800A020860188010800EF3086002408BE
:10011000F0278800A020860188010800DF308600D3
:100120002508F0278800A020860188010800BF303C
:1001300086002608F0278800A02086018801080094
:10014000A70BA02808000A302102031C1028A101D7
:10015000A20A080006302202031C1028A201A30AEA
:1001600008000A302302031C1028A301A40A080077
:1001700006302402031C1028A401A50A08000A3036
:100180002502031C1028A501A60A0800A50A0430B0
:100190002502031C080002302602031CD120A60100
:1001A00008000A302502031C0800A501A60A080061
:100FE00082073F3406345B344F3466346D347D34CD
:080FF00007347F346F343F34F5
:02400E00313F40
: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
nhh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-03-2006, 01:00 PM   #58
falleaf
PIC Bang chủ
 
falleaf's Avatar
 
Tham gia ngày: May 2005
Bài gửi: 2,631
:
Send a message via Yahoo to falleaf
nhh ơi, bạn gửi file .hex thì nên gửi bằng cách gửi kèm file, nhìn phía bên dưới khi bạn viết bài trả lời á, phần Chức Năng, có mục Tải file từ máy. Lúc đó bạn tải file .hex lên, hoặc tải file .zip lên, như vậy sẽ thuận tiện hơn cho người đọc.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2006, 12:56 AM   #59
ngohaibac
Đệ tử 9 túi
 
ngohaibac's Avatar
 
Tham gia ngày: Oct 2005
Nơi Cư Ngụ: BKHN
Bài gửi: 231
:
Send a message via Yahoo to ngohaibac
Trích:
Nguyên văn bởi pb1
Nhà mình có bác nào dảnh thì giải thích giúp em cái này cái:
static volatile bit flag=0;
static volatile unsigned int t1=0,t2=0;
Khai báo biến kiểu này là kiểu gì thế?
Theo tài liệu tại: \HT-PIC\manual\manual.pdf trang 153 . Bọn nó viết thế này: (tạm dịch)

Kiểu dữ liệu volatile được dùng để báo cho trình dịch biết rằng đối tượng được khai báo kiểu volatile có thể không cần lưu trữ lại giá trị giữa các lần truy cập liên tiếp. Điều đó làm cho chương trình có sự tối ưu hoá từ việc là những dư thừa rõ ràng đang được loại ra khi sử dụng một đối tượng có kiểu volatile bởi ví đối tượng đó có thể thay đổi tuỳ theo chương trình hoạt động như thế nào.

Tất cả các port I/O và tất cả các biến mà bị thay đổi giá trị trong trình phục vụ ngắt nên khai báo kiểu volatile.

Ví dụ:
Code:
volatile static near unsigned char PORTA @ 0xF80;
Đối tượng volatile được truy nhập theo một cách khác so với một đối tượng không có khai báo volatile. Khi gán giá trị của một đối tượng không có khai báo volatile = 1 thì đối tượng này sẽ bị xoá và địa chỉ của đối tượng sẽ tăng lên. Nhưng với biến có khai báo violatile thì cách hoạt động như sau: đầu tiên là gán giá trị của thanh ghi W = 1 và sau đó là lưu giá trị đó vào địa chỉ của ban đầu của đối tượng đó.

Kết luận: như vậy là khai báo volatile được dùng với biến phải sử dụng liên tục. Khi khai báo như thế thì tiết kiệm được địa chỉ của RAM.

Khi các bạn mở các file include ra sẽ thấy được rằng bọn nó khai báo địa chỉ cho các port đều theo kiểu này
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 26-03-2006, 01:13 AM   #60
pb1
Đệ tử 2 túi
 
Tham gia ngày: Feb 2006
Bài gửi: 31
:
hehe, làm ăn phải như thế chứ
cảm ơn bác Bắc nhé, em hiểu rùi

thay đổi nội dung bởi: pb1, 26-03-2006 lúc 01:22 AM.
pb1 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
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


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