Ðăng Nhập

View Full Version : xin giúp đỡ pic 12f683


phucvinh885
29-06-2008, 09:56 AM
ví dụ trong 16f877a thi mình có thể lấy luôn các cổng vào ra là RA0,RA1.....RD0...dể xuất dữ liệu
nhưng ở pic 12f683 mình ko biết nó được dịnh nghĩa có tên là gì ,
mong các bạn giúp đỡ

namqn
29-06-2008, 07:59 PM
ví dụ trong 16f877a thi mình có thể lấy luôn các cổng vào ra là RA0,RA1.....RD0...dể xuất dữ liệu
nhưng ở pic 12f683 mình ko biết nó được dịnh nghĩa có tên là gì ,
mong các bạn giúp đỡ
Mời bạn xem mục 4 - GPIO Port trong datasheet của PIC12F683, link dưới đây:
http://ww1.microchip.com/downloads/en/DeviceDoc/41211D_.pdf

Thân,

phucvinh885
29-06-2008, 11:21 PM
em dùng HT PIC để viết , nhưng nó lại báo là ko định nghĩa được ký tự đó
VD: em dùng GP0,GP1,GP2

em cho lẹnh
GP0=0;
GP1=1;
nhưng lại ko được

anh giúp em với

namqn
30-06-2008, 01:09 AM
em dùng HT PIC để viết , nhưng nó lại báo là ko định nghĩa được ký tự đó
VD: em dùng GP0,GP1,GP2

em cho lẹnh
GP0=0;
GP1=1;
nhưng lại ko được

anh giúp em với
Bạn tìm tập tin header dành cho PIC12F683 trong thư mục cài đặt HT PIC, và tìm hiểu trong đó xem họ gọi thanh ghi GPIO và các bit của nó ra sao. Tôi không dùng HT PIC nên không tìm thông tin này cho bạn được.

Thân,

phucvinh885
30-06-2008, 02:03 PM
cám ơn anh , em đã tìm được rồi , nhưng lại có vấn đề
VD :khi em xuất ra một cổng GP0 mức H thì tất cả các chân còn lại tự động về 0
em khoong thể hiểu nổi .
và mottj vấn đề nũa là em ko thể đọc dữ liệu từ một chân nào đó

VD: đây là hàm em viết

#include<pic.h>
#include <stdio.h>
// thach anh 4MHZ
#include"delay.h"
__CONFIG(17);

#define H GP1
#define L GP2
#define TEXT GP0


void main(void)
{

OPTION = 0b10000111; // ty le chia 256 // 0,256ms / ko co tro treo
TRISIO = 0b11111100; //Cong GP2 là vào
GPIO=3; // GP0=1;GP1=1



while(1)
{

GP0=1; // ko hieu sao chan GP1 tu dong ve 0

if(GP2)GP1=0; // ham nay ko co tac dung , em ko the kiem tra chan GP2 mac du da dua no len muc 1(0) va lenh nay ko the thuc hien duoc???
else GP1=1; // cho GP1=1 nhung ko hieu sao chan GP0 tu dong ve 0
DelayMs(1000);
GP0=0;
DelayMs(1000);


}
}

phucvinh885
13-07-2008, 08:21 PM
em đã tìm ra lời giải
vì các cổng này đếu có thể là analog nên ta phải khởi tạo thêm thanh ghi ADCON
cho tất cả là Digital thì được ngay
cám ơn anh đẫ giứp

chungtn1980
25-06-2010, 09:10 AM
ví dụ trong 16f877a thi mình có thể lấy luôn các cổng vào ra là RA0,RA1.....RD0...dể xuất dữ liệu
nhưng ở pic 12f683 mình ko biết nó được dịnh nghĩa có tên là gì ,
mong các bạn giúp đỡ

Mình cũng thấy khó cái này, Nhờ các anh em bảo giúp
Chương trình này kiểm tra mức dầu của máy thông qua ADC, sau đó xuất ra còi báo hoặc tiếp tục cho xung đến bộ Điều khiển
Chương trình này khi chạy không xuất xung ra chân A3 khi a<1500, khi a>1500 thì kiểm tra trên osilo 2 kênh A0, A2 lại có biên độ khác nhau(gấp đôi 5V và 2.2V)

#include<12f683.h>
#DEVICE ADC=8
//#define sAN0
#fuses INTRC_IO, NOMCLR,NOWDT,NOPROTECT
#USE delay(internal=8M)
int16 t,a ;
void main(){
SET_TRIS_a(0b00000010);// chi co chan 6-A1 la vao adc
setup_adc_ports(sAN1);
setup_adc(adc_clock_internal);
while (true) {
set_adc_channel(1);
delay_us(1);
aq==0; // cho gia tri dau bang 0
aq=read_adc();

if (a<1500) //neu a<90 thi phat xung vao kenh A3 de ra coi bao
{
while(1)
{
output_high(PIN_A3);
delay_ms(30);
output_low(PIN_A3);
delay_ms(30);
}
}
//////////////////////////////////////////////////////
if (a>1500) // neu a>1500
{t==0;//gan gia tri dau
while(t<100)// thuc hien vong nay 100 lan
{
t++;
output_high(PIN_A0);//xuat xung ra cong A0
delay_us(7000); //
output_low(PIN_A0);//
delay_us(7000);
}
}
}
}

chungtn1980
25-06-2010, 09:14 AM
Câu hỏi của mình là:
1. Thủ tục nhập xuất, định nghĩa hướng vào ra cho 12f683 trên CCS
2. Thủ tục khởi tạo và khóa các kênh ADC trên 12f683
mong anh em chỉ giúp!