PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > RTOS và Thuật toán với 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

RTOS và Thuật toán với PIC RTOS và Các thuật toán dùng cho PIC/dsPIC/PIC32
Mod: phamminhtuan

Ðề tài đã khoá
 
Ðiều Chỉnh Xếp Bài
Old 31-10-2008, 07:29 AM   #1
osaka_boy
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 2
:
Hỏi về cải tiến code C chp PIC6F877

Chào các anh chị, em là thành viên mới toanh, và chưa biết nhiều về lập trình PIC(em làm về lập trình web thôi). Nhưng số là công ty có 1 cái chương trình viết bằng C, điều khiển mạch của con PIC16F877, giờ muốn cải tiến nó tí, mong cả nhà giúp đỡ...

Em nói sơ về mạch đó: Mạch đó là của cái máy thổi CO2 vào nước và làm nóng dần nước.
Hiện giờ chu kỳ chạy của máy là sau 5 phút, 10 phút, 15, 20, 25, 30 phút thì ngắt 1 lần.

Giờ công ty muốn cải tiến lại sau 12 tiếng, 24 tiếng và không giới hạn.

EEPROM như sau:

Code:
#define EEPROM 0x2100
#rom EEPROM =	{0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
		 1,5,10,15,20,25,30,0,0,0,0,0,0,0,0,0,
		 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

và trong đoạn code interrupt như sau:

Code:
    
#int_timer0
timer0_interval()
		{
		set_timer0(0);
		sec = sec - 1;
		if(sec == 0)	
		{
		sec = SECMAX;				//clock  8MHz    1sec
		sec_60  = sec_60 + 1;
			if(sec_60 == 60)
			{
			min = min + 1;
			min_5 = min_5 + 1;
			sec_60 = 0;
			
			if(min_5 == 5)                 // Nếu đúng 5 phút thì thực hiện ...
			{
			led_temp4 = led_temp4 >> 1;
			bit_clear(led_temp4,6);
			bit_clear(led_temp4,7);
			led_temp3 = 0;
			led_temp3 = led_temp4 | led_temp2;
			seg_disp(0x22,led_temp3);
			min_5 = 0;
			}

			if(min >= (set_time-3))
			{
			co2_lock = 1;
			}
			else
			{
			co2_lock =0;
			}
			

			if(min >= set_time)
			{
			output_bit(PIN_C6,1);			
			d_out  = 0xff;
			
			
									
			d_buff = 0;
			port_d = 0;
			}
			if(min == (set_time+10))
			{
			min = 0;
			unten = 0;
			d_buff = 0;
			a_buff = 0;
			port_d = 0;
			d_out  = 0xff;
			stage_1 = 0;
			min_5 =0;
			output_bit(PIN_C6,0);
			speaker(200);
			}
			
			}
		}
		}

Trong EEPROM có các số 5,10,15,20,25,30 tương ứng với thời gian set_time yêu cầu. Giờ nếu muốn set_time lại là 12 tiếng, 24 tiếng, không giới hạn. Thì sẽ chỉnh lại chổ EEPROM này phải không ạ?

Code:
#define EEPROM 0x2100
#rom EEPROM =	{0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
		 1,720,1440,0,0,0,0,0,0,0,0,0,0,0,0,0,
		 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}
hay là tính theo tiếng thì...

Code:
#define EEPROM 0x2100
#rom EEPROM =	{0,1,128,0,0,0,0,0,0,0,0,0,0,0,0,0,
		 1,12,24,0,0,0,0,0,0,0,0,0,0,0,0,0,
		 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}

Và trong đoạn interrupt, cũng phải sửa lại là... nếu đủ 12 tiếng(hoặc viết thành 720 phút) thì thực hiện....

Vì em là chưa biết gì về lập trình PIC hết, nên em nghĩ là làm thế có thể được. Cả nhà giúp em xem dùm đoạn code và sơ đồ mạch bên kèm theo bên dưới và chỉ giúp em là phải cải tiến thế nào dùm em nhe... Ngoài ra còn cần phải sửa gì nữa không nhe.

Cám ơn cả nhà rất nhiều!!!
File Kèm Theo
File Type: rar hoivePIC.rar (78.8 KB, 125 lần tải)
osaka_boy vẫn chưa có mặt trong diễn đàn  
Old 31-10-2008, 01:21 PM   #2
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
Cũng giống như lập trình C bình thường, em thêm một biến vào chỗ

if(min_5 == 5) // đếm đến 5 thì thực hiện 5 phút.

Nếu min_5 em thay bằng min_720 thì em có 720 phút, tương đương 12 tiếng, và nếu muốn 24 tiếng thì em tăng lên gấp đôi. Viết bằng C thì quan trọng em khai báo biến là kiểu gì thôi, không quan trọng giới hạn bộ nhớ nên không lo chuyện đó.

Em khai báo kiểu int16 là lưu đủ số này rồi.

Anh chưa xem chương trình cụ thể của em, nhưng ý tưởng sửa lại chỉ đơn giản vậy thôi.

Chúc vui.
falleaf vẫn chưa có mặt trong diễn đàn  
Old 31-10-2008, 02:12 PM   #3
osaka_boy
Nhập môn đệ tử
 
Tham gia ngày: Oct 2008
Bài gửi: 2
:
Dạ em cám ơn anh falleaf nhiều lắm ạ, em sẽ sửa lại để test thử.
Cám ơn anh đã trả lời cho bài viết của em. Chúc cả nhà cuối tuần vui vẻ
osaka_boy vẫn chưa có mặt trong diễn đàn  
Ðề tài đã khoá


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à 05:24 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