PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Các ngôn ngữ lập trình khác (CCS C, HT 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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 05-11-2011, 09:31 PM   #1
halinh12sinh
Đệ tử 1 túi
 
Tham gia ngày: Jun 2011
Bài gửi: 14
:
Mọi người kiểm tra giùm em code HT PIC về TIMER0

Em chào cả nhà..em mới chuyển tu CCS sang HT PIC nên còn bỡ ngỡ quá.em đang thử ngiệm chương trình nhấp nháy led ở PORT C với chu kì 500ms,điều khiển bằng timer0.nhưng không hiểu sao mạch mô phỏng chỉ sáng 1 led duy nhất rồi đơ.protues hiển thị dòng chữ cảnh báo : stack over flow rushing return address of interuppts.em nạp thử vào mạch thật cũng bị y như vậy.
em đã post code và file mô phỏng để mong mọi người giúp đỡ.
File Kèm Theo
File Type: rar timer 0.rar (14.8 KB, 15 lần tải)
halinh12sinh vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-11-2011, 10:54 AM   #2
binhngo
Nhập môn đệ tử
 
Tham gia ngày: Feb 2009
Bài gửi: 8
:
Thumbs down Ok!

Trích:
Nguyên văn bởi halinh12sinh View Post
Em chào cả nhà..em mới chuyển tu CCS sang HT PIC nên còn bỡ ngỡ quá.em đang thử ngiệm chương trình nhấp nháy led ở PORT C với chu kì 500ms,điều khiển bằng timer0.nhưng không hiểu sao mạch mô phỏng chỉ sáng 1 led duy nhất rồi đơ.protues hiển thị dòng chữ cảnh báo : stack over flow rushing return address of interuppts.em nạp thử vào mạch thật cũng bị y như vậy.
em đã post code và file mô phỏng để mong mọi người giúp đỡ.
OK
Em chào cả nhà..em mới chuyển tu CCS sang HT PIC nên còn bỡ ngỡ quá.em đang thử ngiệm chương trình nhấp nháy led ở PORT C với chu kì 500ms,điều khiển bằng timer0.nhưng không hiểu sao mạch mô phỏng chỉ sáng 1 led duy nhất rồi đơ.protues hiển thị dòng chữ cảnh báo : stack over flow rushing return address of interuppts.em nạp thử vào mạch thật cũng bị y như vậy.
em đã post code và file mô phỏng để mong mọi người giúp đỡ.
File Kèm Theo
File Type: rar Timer0led.rar (14.6 KB, 11 lần tải)
binhngo vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-11-2011, 10:24 AM   #3
delta21
Đệ tử 5 túi
 
delta21's Avatar
 
Tham gia ngày: Mar 2010
Bài gửi: 95
:
Send a message via Yahoo to delta21
Wink

chào bạn,bạn mới học thì nên steup timer 1 cách tường minh hơn.
code của bạn bị sai phần steup timer0,OPTION = 0B110 =>> bạn clear cả 2 bit T0SE=0,T0CS=0,không biết bạn tính dùng timer hay counter .
với lại theo thứ tự thì bạn nên set trisc trước rồi mới tới portc
đây là code tham khảo về setup timer 0
Code:
// MCU  : 16f877a
// XTAL : 4MHz
// Connection: A led is connected to RD0.
// Desctiption: Timer0 has overflowed: the led will blink after every 1 second.

#include <htc.h>

__CONFIG(XT & WDTDIS & LVPDIS & DEBUGDIS);

#define _XTAL_FREQ 4000000		

unsigned char count=0;			

//Ham main *******************************
void main(void)
{
        ANSEL=0x00;//ADC OFF
        ANSELH=0x00;

	TRISC=0x00;
	PORTC=0x00;

	T0CS=0;						//USE INTERNAL CLOCK
	
		
	PSA=0;						//USE PRESCALER
	PS2=0; PS1=1; PS0=1;		                //1:16

	T0IF=0;						//Clear int flag
	T0IE=1;						//Enable tmr0 int
	GIE=1;						//Enable glb int
	
	TMR0=0x06;					//TMR0 init
	
	while(1){};					        //Waiting for int, so we dont do anything
}


}
__________________
Chỉ sợ thiếu tiền......
delta21 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2011, 03:52 PM   #4
internet.com
Đệ tử 1 túi
 
Tham gia ngày: Sep 2010
Bài gửi: 18
:
Chào bạn! Chương trình nháy led port C của bạn có thể như sau, bạn tham khảo:
Code:
// MCU  : 16f887
// XTAL : 4MHz

#include <htc.h>

__CONFIG(XT & WDTDIS & LVPDIS & DEBUGDIS);
__CONFIG(BORV21);

#define _XTAL_FREQ 4000000		

unsigned char count=0;			

//Ham main *******************************
void main(void){
        ANSEL=0;					//ALL PORTS ARE DIGITAL
        ANSELH=0;

	TRISC=0;
	PORTC=0;

	T0CS=0;						//USE INTERNAL CLOCK
	
		
	PSA=0;						//USE PRESCALER
	PS2=0; PS1=1; PS0=0;		                //1:8

	T0IF=0;						//Clear int flag
	T0IE=1;						//Enable tmr0 int
	GIE=1;						//Enable glb int
	
	TMR0=5;						//Timer0 will overflow after: 8*250*1us = 2ms 
	
	while(1);					//Waiting for int
}

void interrupt isr(){			                //Do not rename isr ("interrupt isr()")
	if(T0IE && T0IF){
		T0IF = 0;
		TMR0=5;
		++count;
		if(count == 125){		        //125*2ms = 250ms
			count = 0;
			PORTC ^= 0xff;	
		}
	}
}

thay đổi nội dung bởi: internet.com, 23-11-2011 lúc 04:05 PM.
internet.com 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à 03:29 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