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 17-06-2011, 07:55 PM   #1
thanhtuanuct2
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 4
:
Làm sao nó cứ báo lối

em viết cái CODE để xử lý ngắt mà sao nó cứ báo lỗi chỗ enable_interrups (INT_LED)
Mong các sư phụ giúp đỡ
#include "D:\pic-c\a\bai2.h"
#use delay (clock=2000000)
//#device PIC16F877A *=16
int8 mode,i;
byte temp;
#INT_EXT
EXT_LED()
{
mode++;
if (mode==3) mode=0;
}
void program1();
void program2();
void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);

enable_interrups(INT_LED) ;
ext_int_edge(H_TO_L);
enable_interrups(GLOBAL) ;
mode=0;
while(1)
{
// TODO: USER CODE!!
output_b(0x00);
delay_ms(500);
switch (mode)
{
case 0rogram1();break;
case 1rogram2();break;
}

}
}
void program1()
{
set_tris_b (0x00);
output_b(0xf0);delay_ms(300);
output_b(0xff);delay_ms(100);
}
void program2()
{
temp=0xff;
for (i=0;i<=8;i++)
{ output_b(temp);
delay_ms(150);
temp <<=1;
}
}
thanhtuanuct2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-06-2011, 11:28 PM   #2
shakespeare_a18
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 22
:
bác phải để là

#int_ext
void ext_led
{...}
...
...
enable_interrupt(int_ext);
shakespeare_a18 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-06-2011, 11:13 AM   #3
thanhtuanuct2
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 4
:
Vẫn không được các bac ơi

Trích:
Nguyên văn bởi shakespeare_a18 View Post
bác phải để là

#int_ext
void ext_led
{...}
...
...
enable_interrupt(int_ext);
mình đã sửa như vậy nhưng không được vẫn báo lỗi như cũ
thanhtuanuct2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-06-2011, 03:29 PM   #4
hein_ts
Đệ tử 6 túi
 
Tham gia ngày: Feb 2011
Bài gửi: 156
:
Quái lạ, mình đọc phần Help của CCS mãi mà không thấy cái ngắt có tên là (INT_LED)?
Chắc là bạn nhầm rồi, sử dụng ngắt nào phải khai báo enable ngắt đó:
enable_interrups(INT_LED) ;
đáng nhẽ phải là INT_EXT chứ nhỉ;
Có báo lỗi tiếng anh cố đọc mà hiểu thôi?
Có hàm ( chương trình con) là nên khai báo chứ nhỉ. Cái chương trình trong ngắt cũng phải khai báo (void.... còn viết sau khai báo ngắt thì không dùng void thấy chạy bình thường?
hein_ts vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-06-2011, 09:46 PM   #5
shakespeare_a18
Đệ tử 1 túi
 
Tham gia ngày: Aug 2010
Nơi Cư Ngụ: TP HCM
Bài gửi: 22
:
Code:
#include <16f887.h>
#fuses HS, MCLR
#use delay (clock=2000000)

int8 mode,i;
byte temp;
#INT_EXT
void isr_ext()
{
mode++;
if (mode==3) mode=0;
}
void program1();
void program2();
void main()
{
enable_interrupts(INT_ext) ;
ext_int_edge(H_TO_L);
enable_interrupts(GLOBAL) ;
mode=0;
while(1)
{
// TODO: USER CODE!!
output_b(0x00);
delay_ms(500);
switch (mode)
{
case 0: program1();break;
case 1: program2();break;
}

}
}
void program1()
{
set_tris_b (0x00);
output_b(0xf0);delay_ms(300);
output_b(0xff);delay_ms(100);
}
void program2()
{
temp=0xff;
for (i=0;i<=8;i++)
{ output_b(temp);
delay_ms(150);
temp <<=1;
}
}
Bác viết sai chính tả hơi nhiều nên nó báo lỗi đó.
shakespeare_a18 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 19-06-2011, 09:06 AM   #6
thanhtuanuct2
Nhập môn đệ tử
 
Tham gia ngày: Mar 2011
Bài gửi: 4
:
cam on

Trích:
Nguyên văn bởi shakespeare_a18 View Post
Code:
#include <16f887.h>
#fuses HS, MCLR
#use delay (clock=2000000)

int8 mode,i;
byte temp;
#INT_EXT
void isr_ext()
{
mode++;
if (mode==3) mode=0;
}
void program1();
void program2();
void main()
{
enable_interrupts(INT_ext) ;
ext_int_edge(H_TO_L);
enable_interrupts(GLOBAL) ;
mode=0;
while(1)
{
// TODO: USER CODE!!
output_b(0x00);
delay_ms(500);
switch (mode)
{
case 0: program1();break;
case 1: program2();break;
}

}
}
void program1()
{
set_tris_b (0x00);
output_b(0xf0);delay_ms(300);
output_b(0xff);delay_ms(100);
}
void program2()
{
temp=0xff;
for (i=0;i<=8;i++)
{ output_b(temp);
delay_ms(150);
temp <<=1;
}
}
Bác viết sai chính tả hơi nhiều nên nó báo lỗi đó.
cam on bac !! minh thuc hien dc roi!!
thanhtuanuct2 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à 08:14 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