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 02-05-2006, 01:42 AM   #1
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
Timer1 đếm xung hiển thị 4 Led7 đoạn

Có lẽ chương trình hiển thị số lên led7 đoạn đã được mịnh viết bên dientuvietnam.net nên sẽ không viết lại nữa nha. Nhưng máy mình không vào được site này. Nên đành post lên bên này vậy.

Sau đây là chương trình đếm xung từ chân RC1/T1OSI/CCP2 để hiển thị lên 4led 7 thanh. Một chương trình cũng rất đơn giản.Xin mời các bạn xem và cho ý kiến về chương trình này:
Code:
/*;========================================================
; Ten chuong trinh	: Quet 4led 7 thanh
; Nguoi thuc hien	: Ngo Hai Bac (NOHB)
; Ngay thuc hien	: 
; Phien ban	: 1.0
; Mo ta phan cung	: Dung PIC16F877A - thach anh 20MHz
; 					4 led 7 anot chung, cac catot noi voi PORTD, 4 chan anot noi voi cuc E trans A1015
;					cuc B cua trans noi voi chan 7->5 cua PORTA
;					Xung ngoai duoc cho vao chan RC1/T1OSI/CCP2
;----------------------------------------------------------------
; Ngay hoan thanh	: 
; Ngay kiem tra	: 
; Nguoi kiem tra	: 
;----------------------------------------------------------------
; Chu thich	: 		
;========================================================*/
#include<pic.h>
__CONFIG(HS & PWRTEN & BOREN & LVPDIS & WDTDIS );

const unsigned char Font[]={ 0b00000011, 0b10011111, 0b00100101, 0b00001101, 0b10011001,\
							0b01001001, 0b01000001, 0b00011111, 0b00000001, 0b00001001};


// Chuyen doi
void Convert(unsigned char *a,unsigned char index, unsigned int number){
	unsigned char i;
	for(i=0;i< index; i++){
		*(a+i)  = number%10;
		number = number/10;
	};	
 }

//=====  Ham khoi tao
void interrupt MyInt(void){
	static volatile unsigned int counter1,counter2;
	// counter1 dem so lan Timer0 tran
	// counter2  dem so lan ca  4 led7 thanh  duoc quet
	static volatile unsigned int number;
	static volatile unsigned char a[4]={0,0,0,0};
	static volatile unsigned char j;  // bien dem kiem tra xem led nao duoc quet
		if(T0IF & T0IE){	
			TMR0 = 6;
			T0IF = 0 ;// xoa co ngat
			++counter1;
			if( counter1 == 3){
				counter1 = 0;
				PORTD = 0xFF;
				PORTA  = 0xFF - (1<<(5- j)) ;
				PORTD	= Font[a[j]];
				if(++j==4) {
					j=0;
					++counter2;
				};
			};
			if(counter2 == 2000){
				number = (TMR1H << 8) | TMR1L;
				TMR1ON = 0 ; // ngung Timer1
				TMR1H = TMR1L = 0;
				TMR1ON = 1 ;  // bat lai Timer1
				 if(number>9999) number= 0;
				counter2 = 0;
				Convert(a, 4, number);
			};
		};
	}

//------------------------------------init
void init(void)
	{
		//=================   init for PORTs
		OPTION = 0b00000000;
		ADCON1 = 0b00000111;
		TRISA	= 0b00000000;
		TRISB	= 0b11111111;
		TRISC	= 0b11111111;
		TRISD	= 0b00000000;
		PORTD = Font[0];
		TRISE	= 0b11111111;
		//================  Khoi tao cho Timer0
		GIE		= 1;
		T0IE = 1;
		TMR0 = 6;
		
		// ========= Khoi tao cho dem Timer1
		TMR1CS   = 1;						// Timer1 hoat dong o che do Counter Mode
		T1SYNC  = 1;						// TMR1 hoat dong o che do dem khong dong bo
		T1OSCEN = 1;						// Dem xung tu chan RC1/T1OSI/CCP2
		T1CKPS1 = T1CKPS0 = 0;			// Chon Prescaler = 1:1
		TMR1H = TMR1L = 0;
		TMR1IE = 0;						// Khong dung ngat Timer1
		TMR1ON = 1;						// Bat Timer1
		
	}

//------------------------------------MAIN
void main(){
	init();
	while(1);
}
// =============  Kết thúc
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
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
Cách giao tiếp DS1877 và PIC6F877A nbqvdp Cơ bản về vi điều khiển và PIC 7 05-08-2010 06:46 PM
Hỏi về chương trình HTPIC của ngohaibac riquelme Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) 26 20-01-2007 09:42 PM
Giúp đỡ về HTPIC riquelme Cơ bản về vi điều khiển và PIC 0 11-01-2007 11:56 PM
Giao tiếp Pic6f877A qua cổng máy in???? spirit Cơ bản về vi điều khiển và PIC 8 11-09-2006 01:04 PM


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