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 23-03-2010, 02:34 PM   #1
vanlv
Đệ tử 1 túi
 
Tham gia ngày: Oct 2009
Bài gửi: 25
:
Talking Lấy số liệu sau khi có ngắt ngoài

Mình mới học về PIC, đã thử đưa xung vào để test ngắt INT_EXT được rồi. Giờ còn thuật toán là đếm bằng timer1 và khi có xung sườn âm thì sẽ xảy ra ngắt ngoài rồi lấy số đếm đó gửi ra máy tính và cho đếm tiếp. Các anh, các bạn có thể gợi ý giúp mình thuật toán đó không. Mình dùng ccs, đây là code của mình đã viết và sơ đồ nguyên lý.
http://www.mediafire.com/?ojrlbntwnyn

#include "G:\Electronics\CCS C\Cac bai thuc hanh tu lam\Easiest\v2.h"
#include <def_877a.h>
//#include <math.h>
//#include <ctype.h>
#fuses XT,NOWDT,NOPUT,NOPROTECT,NOLVP //XT: thach anh <= 4MHz
#include <lcd_lib_4bit.c> // Thu vien ham cho LCD

//void delay(int16 N); // Khai bao ham delay
//void tre_ms(unsigned int time);

int16 i=0,second=0,tseconds=0,tpreset=10;
unsigned int16 value;
//char c;
/////////////////////////////////
/*
void delay(int16 N)
{
int16 j=0,i=0;
for(i=0;i<=200;i++)
if(j<N)j++;
}*/

/////////////////////////////////
#INT_TIMER0
void time()
{
i++;
if(i>=2000){second++; i =0; tseconds++;}
if(tseconds>=tpreset){tseconds=0; value = get_timer1(); set_timer1(0); }

}
/////////////////////////////////


#INT_EXT
void get_data()
{
printf("ok"); //test khi có ngat se in ra man hinh

}

/////////////////////////////////


void main()
{

setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_OFF);
setup_psp(PSP_DISABLED);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_DIV_2|RTCC_INTERNAL); //Timer0 lam bo dem thoi gian
setup_timer_1(T1_EXTERNAL|T1_DIV_BY_1); //Timer1 dem xung ngoai (lay tu dau ghi)
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
enable_interrupts(GLOBAL); //Khoi tao cho ngat toan cuc
enable_interrupts(INT_TIMER0); //Khoi tao cho ngat timer0
enable_interrupts(INT_TIMER1); //Khoi tao cho ngat timer1
enable_interrupts(INT_EXT); //Khoi tao cho ngat ngoai
ext_int_edge(H_TO_L); //Chon suon am de xay ra ngat ngoai

/*
lcd_init();
lcd_putcmd(0x01);
lcd_putcmd(0x80);
printf(LCD_putchar,"OK");
lcd_putcmd(0xC0);
printf(LCD_putchar,"Hello");
*/

// TODO: USER CODE!!
set_timer0(5);
tpreset=10;
TRISB=0XFF;
TRISC=0x00;
PORTC=0XFF;
//i =0;
while(TRUE)
{
//value=get_timer1();
delay_ms(50); //Thoi gian tre la 50ms
printf("%5ld %5ld \n",second,value);
PORTC=0;

}


}

thay đổi nội dung bởi: vanlv, 23-03-2010 lúc 02:38 PM. Lý do: Không up được file
vanlv vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
 

Tags
ngắt, số liệu


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:47 PM.


Đượ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