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 Tìm Kiếm Bài Trong Ngày Ðánh Dấu Ðã Ðọc 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 01-11-2010, 04:37 PM   #1
hoathanlq
Nhập môn đệ tử
 
Tham gia ngày: Jul 2009
Bài gửi: 4
:
Unhappy Pro xem hộ chương trình giao tiếp SPI

Có pro nào xem hộ mình với....Mình dùng 2 PIC :
16F887 làm master...
16F690 làm slave...
kết nối phần cứng ok...Thế mà mãi không chạy.....
Mục đích chương trình là: Master đo ADC rồi truyền qua SPI, Slave nhận giá trị ADC bên Master rồi hiển thì qua cổng Com mt.....

Code bên 16F887:

#include "D:\PIC\c_pic\test1\SPI truyen.h"
#include <float.h>
#include <stdio.h>
#use rs232(baud=19200,parity=n,xmit=pin_a7,rcv=pin_a1)
//#use spi(DI=PIN_B1, DO=PIN_B0, CLK=PIN_B2, ENABLE=PIN_B4, BITS=8)
#use spi(force_HW)
int8 x,z,n;
float y;
void ADC(void)
{
//x++;
//delay_ms(z);
x=read_adc();
output_d(read_adc());
if (input(pin_a2)==0)
{
z=0;
delay_ms(2000);
y=read_adc()*4.97/255;
printf("Gia tri ADC: %f (v) \r\n ",y);
}
else z=500;
}

void main()
{

setup_adc_ports(sAN0|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_64);
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);// This device COMP currently not supported by the PICWizard
setup_oscillator(OSC_8MHZ);
set_tris_d(0);
set_tris_a(7);
set_tris_c(16);
set_adc_channel(0);
// TODO: USER CODE!!
while (1)
{
ADC();
spi_write(x);
}
}



Code cho Slave 16F690:

#include "D:\PIC\c_pic\test1\SPI nhan.h"
#use rs232(baud=19200,parity=n,xmit=pin_c4,rcv=pin_b7)
int8 x;

void main()
{

setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SLAVE);
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);// This device COMP currently not supported by the PICWizard
enable_interrupts(INT_TBE);
enable_interrupts(INT_RDA);
enable_interrupts(GLOBAL);
setup_oscillator(OSC_8MHZ);
set_tris_c(0);
// TODO: USER CODE!!
//lai:
do
{

//while(spi_data_is_in()==true)
//{
if (spi_data_is_in())
{
x=spi_read();
printf ( "Gia tri SPI nhan duoc la: %u \r\n",x);
delay_ms(2000);
}
}
while(1);
//}
//else goto lai;
}



Các thứ khác đã ngon...chỉ có SPI không chạy??????????? Có pro nào xem hộ mình thiết lập mode SPI đúng chưa???? Sai chỗ nào không???????
hoathanlq vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời

Ðiều Chỉnh
Xếp Bà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à 11:58 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