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

 
 
Ðiều Chỉnh Xếp Bài
Prev Previous Post   Next Post Next
Old 12-03-2006, 04:18 PM   #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
HTPIC - các chương trình cho PIC6F877A

Tôi đã viết các bài viết ở Điện tử Việt Nam tại luồng này:
http://dientuvietnam.net/forums/show...4688#post14688

Ngôn ngữ là: HTPIC

Có lẽ bài toán nháy led là bài toán đơn giản và tạo hứng thú cho các bạn học vi điều khiển. Tôi xin mạn phép up chương trình nháy led đơn giản và xin các bạn cho ý kiến là liệu có thể tối ưu chương trình này đến mức nào nữa?


Miêu tả phần cứng: nối các chân của PORTD với các 8led. Các chân còn lại của led nối với một con trở hạn dòng 330Ohm, sau đó nối với GND.


Đây là sơ đồ nguyên lý:



Hình 1: Nháy 8led rất đẹp .
Phần mềm: dùng HTPIC.

Hiện tuợng: các bạn chạy thử xem thế nào

Giải pháp: có 2 giải pháp là dùng ngắt hoặc dùng delay.

Chương trình đầu là dùng delay:

Sau đây là chương trình:

Code:
#include<pic.h>
__CONFIG(HS & PWRTEN & BOREN & LVPDIS & WDTDIS );
//================================================================
//==  ham Delay doi so la so miligiay can gay tre
void delayMS(unsigned int time){
	while(time--){
		TMR0 = 6;
		T0IF = 0; // xoa co ngat 
		while(!T0IF);
	};
}

// == Ham khoi tao cho chip PIC16F877A
void init(void){
	// Khoi tao I/O cho cac port
	ADCON1 = 0x07;  // PortA dung la I/O Port
	TRISA = 0xFF; // Port A as input
	TRISB = 0xFF;
	TRISC = 0xFF;
	TRISD = 0x00;// PortD as output
	
	// Khoi tao cho cac thanh ghi	
	OPTION  = 0x00; // dung prescaler cho timer0 voi ti le la 1:2
}

// Chuong trinh chinh
void main(void){
	unsigned char i;
	 init();
	while(1){
		for(i = 0;i<8;i++){
			 PORTD = (1<<i) + (1<<(7-i));
			delayMS(5000);
		};
	};	
}
Câu lênh PORTD = (1<<i) + (1<<(7-i)); là dùng toán tử dịch bít.

File gửi kèm có 2 file: PJ1.c và PJ2.c . PJ1.C là chương trình dùng delay, PJ2 là dùng ngắt.

Xin mọi người cho ý kiến.

thay đổi nội dung bởi: ngohaibac, 05-01-2007 lúc 03:22 PM.
ngohaibac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 


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à 06:26 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