Nguyên văn bởi queduong
Xem bài viết
Thông báo
Collapse
No announcement yet.
Hi-Tech PIC và CCS C
Collapse
X
-
Nguyên văn bởi kiemkhach10 Xem bài viếtHjhj. Ở mỉkoc có supost ansela =0x2F thì cau hinh cong vao tu an0 den an4 hay an5 gì đó của Pic18f45k22 đóModule RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
PIC18F26K22 và 46K22 có analog input AN4, nhưng nó nằm ở chân RA5.
Khác với thông thường ANx nằm ở chân cổng RAx tương ứng. Chính vì thế không tồn tại bit ANSA4. Nhà sản xuất phần cứng đã đúng; trình dịch cũng đúng; chỉ có người sử dụng chưa đọc kỹ datasheet. Trích từ datasheet
Cấu hình bật tính năng analog là căn cứ theo chân cổng, thông qua bit ANSAx, chứ không phải căn cứ theo thứ tự đầu vào analog input.
Comment
-
Vậy thì ANSELA = 0x2F; là sài được AN4 ở vị trí chân RA5 rồi !Module RF chuyên dụng điều khiển, truyền dữ liệu, thiết kế đề tài, dự án điện tử - chuyển giao công nghệ... ĐT: 0904964977 - email: dientuqueduong@yahoo.com
Comment
-
Nguyên văn bởi bqviet Xem bài viếtPIC18F26K22 và 46K22 có analog input AN4, nhưng nó nằm ở chân RA5.
Khác với thông thường ANx nằm ở chân cổng RAx tương ứng. Chính vì thế không tồn tại bit ANSA4. Nhà sản xuất phần cứng đã đúng; trình dịch cũng đúng; chỉ có người sử dụng chưa đọc kỹ datasheet. Trích từ datasheet
Cấu hình bật tính năng analog là căn cứ theo chân cổng, thông qua bit ANSAx, chứ không phải căn cứ theo thứ tự đầu vào analog input.
tức là cứ AN0->ANx là thứ tự các chân vào analog bất kể ở port nào ( AN0->ANx được khai báo trong code hitech pic)
giờ chuyển sang dong pic này khai báo nó rõ ràng hơn nhiều.
với pic mới: +RA0(ANSA0),RA1(ANSA1),RA2(ANSA2),RA3(ANSA3),RA5(ANSA5),RE0(ANSE0)..tương tự các port khác.
với pic cũ: +RA0(AN0),RA1(AN1),RA2(AN2),RA3(AN3),RA5(AN4),RE0(AN5)........
sự khác nhau ở sự đồng bộ các chân khi khai báo
Comment
-
em muốn lưu trạng thái khi mất nguồn vào eeprom thì phải viết như thế nào ạ.vì đồ án của e là đei62 khiển thiết bị qua sms. e dk 2 thiết bị là 2 bóng đèn.
đây là code mplab của em.mọi người viết giùm e đoạn lưu trạng thái dc không ạ. tks all.
#include <htc.h>
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "uart.h" // Cau hinh ket noi va khai bao lenh dung cho giao tiep UART.
#include "lcd.h" // Cau hinh ket noi va khai bao lenh dung cho LCD.
__CONFIG(INTIO & WDTDIS & PWRTEN & MCLREN & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);
#define _XTAL_FREQ 4000000
unsigned char buff_sms[90];
unsigned char dem,khoa,tinmoi;
unsigned char buff;
//************************************************** ************
// Khai bao cac thiet bi,nut nhan voi PIC
//************************************************** ************
#define DENVANG RE0
#define DENXANH RE1
//************************************************** ************
// KHAI BAO BIEN CHO LCD
//************************************************** ************
unsigned int i,j;
const char process[]="Processing......";
//************************************************** ************
// CTC delay - tao thoi gian tre
//************************************************** ************
void delay(unsigned char ms)
{
unsigned char i;
for(i=0;i<ms;i++)
__delay_ms(100);
}
//************************************************** ************
// CTC uart_AT xuat ki tu de giao tiep UART
//************************************************** ************
void uart_AT(const char *s)
{
uart_puts(s);
uart_putc(13);
}
//************************************************** ************
// CTC Cau hinh cho sim900
//************************************************** ************
void cauhinh_sim900()
{
uart_AT("AT");//kiem tra ket noi mang
delay(5);
uart_AT("ATZ");//reset modulm
delay(5);
uart_AT("ATZ");
delay(5);
uart_AT("ATE0");//tat che do echo
delay(5);
uart_AT("AT+ICF=3,3");// che do start-stop (8 Data 1 Stop)
delay(5);
uart_AT("AT+IPR=9600");// thiet lap toc do truyen
delay(5);
uart_AT("AT&W");//luu cau hinh hien tai
delay(5);
uart_AT("AT+CMGF=1");// dang du lieu dinh dang text de gui tin
delay(5);
uart_AT("AT+CNMI=2,0,0,0,0");//thiet lap che do nhan tin nhan tu mang
delay(5);
uart_AT("AT+CSAS");// luu thiet lap
delay(5);
}
//************************************************** ************
// CTC gui tin nhan
//************************************************** ************
void send_sms(const char *text)
{
uart_puts("AT+CMGS=");//lenh gui tin nhan AT+CMGS = "0975260587"
uart_putc(34);
uart_puts("0938114064");
uart_putc(34);
uart_putc(13);//<cr>
delay(3);
uart_puts(text);//data sms
delay(5);
uart_putc(26);
uart_putc(13);
delay(10);
}
//************************************************** ************
// CTC xoa tat ca cac tin nhan
//************************************************** ************
void xoa_het_sms()
{
uart_puts("AT+CMGDA =");
uart_putc(34);
uart_puts("DEL ALL");
uart_putc(34);
uart_putc(13);//<cr>
delay(5);
}
//************************************************** ************
// CTC Xoa buffer
//************************************************** ************
void clear_buff()
{
char i=0;
for(i=0;i<strlen(buff_sms);i++)
{
buff_sms[i]=0x00;
}
}
//************************************************** ************
// CTC Kiem tra so sanh 2 chuoi
//************************************************** ************
char test_string(const char buffer[], const char str[])
{
unsigned char leng_buff = 0;
unsigned char leng_str = 0;
char i, j;
leng_buff = strlen(buffer);
leng_str = strlen(str);
if (leng_buff >= leng_str)
{
for (i = 0; i <= leng_buff - leng_str; i++)
{
for (j = 0; j < leng_str; j++)
{
if (buffer[i + j] != str[j])
break;
}
if (j == leng_str)
return 1;
}
return 0;
}
return 0;
}
//************************************************** ************
// CT Ngat
//************************************************** ************
void interrupt isr()
{
unsigned char data;
//Ngat UART
if(RCIE && RCIF) // Kiem tra cho phep ngat thu cua UART.
{
RCIF = 0; // Xoa co ngat thu.
data=uart_getc();
//Cu phap dieu khien thiet bi
if(data=='*')
{ khoa=0;
tinmoi=1;}
if(khoa==1)
{ buff_sms[dem]=data;
dem++;}
if(data=='+')
{ khoa=1;
dem=0;}
}
}
//************************************************** ************
// CTC khoi dong he thong
// cau hinh SIM, hien thi trang thai ban dau
//************************************************** ************
void khoidong(void)
{
int i;
lcd_gotoxy(0,0);
lcd_puts("\f System\n Processing");
cauhinh_sim900(); //Cau hinh sim900
lcd_gotoxy(0,0);
lcd_puts("\f System\n OK");//hien thi 500ms
}//finish khoi dong
//************************************************** ************
// CTC DIEU KHIEN THIET BI QUA TN
//************************************************** ************
void dieukhien()
{
//DIEU KHIEN DEN XANH
if(test_string(buff_sms,"batxanh"))
{ DENXANH=1; //Bat den xanh
lcd_puts("\f DEN XANH\n Da duoc bat"); //Hien thi LCD
send_sms("DEN XANH da duoc bat"); //Bao cao
clear_buff(); //Xoa bo dem
xoa_het_sms(); //Xoa tin nhan
return;
}
if(test_string(buff_sms,"tatxanh"))
{ DENXANH=0; //Tat den xanh
lcd_puts("\f DEN XANH\n Da duoc tat"); //Hien thi LCD
send_sms("DEN XANH da duoc tat"); //Bao cao
clear_buff(); //Xoa bo dem
xoa_het_sms(); //Xoa tin nhan
return;
}
//DIEU KHIEN DEN VANG
if(test_string(buff_sms,"batvang"))
{ DENVANG=1; //Bat den vang
lcd_puts("\f DEN VANG\n Da duoc bat"); //Hien thi LCD
send_sms("DEN VANG da duoc bat"); //Bao cao
clear_buff(); //Xoa bo dem
xoa_het_sms(); //Xoa tin nhan
return;
}
if(test_string(buff_sms,"tatvang"))
{ DENVANG=0; //Bat den vang
lcd_puts("\f DEN VANG\n Da duoc tat"); //Hien thi LCD
send_sms("DEN VANG da duoc tat"); //Bao cao
clear_buff(); //Xoa bo dem
xoa_het_sms(); //Xoa tin nhan
return;
}
//BAT TAT CA CAC THIET BI
if(test_string(buff_sms,"onall"))
{ DENXANH=1;DENVANG=1;
lcd_puts("\f DEN XANH-VANG\n DA DUOC BAT");
send_sms("DEN XANH-DEN VANG\nDA DUOC BAT");
clear_buff();
xoa_het_sms();
return;
}
//TAT TAT CA CAC THIET BI
if(test_string(buff_sms,"offall"))
{ DENXANH=0;DENVANG=0;
lcd_puts("\f DEN XANH-VANG\n DA DUOC TAT");
send_sms("DEN XANH-DEN VANG\nDA DUOC TAT");
clear_buff();
xoa_het_sms();
return;
}
//KIEM TRA HE THONG
if(test_string(buff_sms,"kiemtra")) // KIEM TRA TINH TRANG CUA THIET BI
{
lcd_puts("\f Dang kiem tra ");
if(DENXANH==0&&DENVANG==0)
send_sms("DENXANH: OFF \nDENVANG: OFF");
if(DENXANH==0&&DENVANG==1)
send_sms("DENXANH: OFF \nDENVANG: ON");
if(DENXANH==1&&DENVANG==0)
send_sms("DENXANH: ON \nDENVANG: OFF");
if(DENXANH==1&&DENVANG==1)
send_sms("DENXANH: ON \n DENVANG: ON");
clear_buff();
xoa_het_sms();
return;
}
}//fin CTC dieukhien
//************************************************** ************
// CHUONG TRINH CHINH
//************************************************** ************
void main()
{
//khai bao cau hinh
ANSEL=0; //Cau hinh cac chan analog deu la digital I/O
ANSELH=0;
TRISA=0b111110;//Chon cac chan de I/O
// TRISB=0b00001111;
// PORTB=0X00;
TRISD=0b00000000;
TRISE=0b000;
PORTE=0b000;
uart_init();//khoi dong UART
lcd_init(); //khoi dong LCD theo cau hinh 4bit
//Cau hinh cho phep ngat Uart
// INTCON = | GIE | PEIE | T0IE | INTE | RBIE | T0IF | INTF | RBIF |
RCIE = 1; // Cho phep ngat RX (UART).
GIE = 1; // Cho phep ngat toan cuc.
PEIE = 1; // Cho phep ngat ngoai vi.
//CHUONG TRINH
khoidong();
while(1)
{
if(tinmoi==1)
dieukhien();
}
}
Comment
Bài viết mới nhất
Collapse
-
bởi mansion123Thi công gỗ óc chó giúp không gian trở nên sang trọng, ấm cúng, gần gũi hơn. Sự kết hợp giữa thẩm mỹ và chất lượng cao của gỗ óc chó chắc chắn sẽ mang lại giá trị lâu dài và làm hài lòng ngay cả những khách hàng khó tính nhất. Vậy đằng...
-
Channel: Quảng cáo
hôm nay, 16:08 -
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
hôm nay, 07:44 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamCám ơn những lời chúc tốt đẹp của em.
Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.
Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....-
Channel: Tâm tình dân kỹ thuật
hôm nay, 02:00 -
-
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.
Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.
Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 22:18 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.
Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:51 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.
Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:39 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.
Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 14:28 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
Comment