Thông báo
Collapse
No announcement yet.
cần giúp đỡ về câu lệnh CCS
Collapse
X
-
Nguyên văn bởi lyxa_bk Xem bài viếtmình có code như hình, mình thắc mắc là sao lại có cảnh báo câu lệnh lỗi. bạn nào biết lỗi ở chỗ nào không?? chỉ dumg mình với
câu lệnh này mà lỗi thì chướng trình chắc chắn không chạy
[ATTACH]82420[/ATTACH]
Warning : Condition always FALSE.
Cảnh báo xảy ra khi có cấu trúc rẽ nhánh if, while mà điều kiện của nó luôn sai. Khi đó đoạn lệnh này sẽ không bao giờ được thực thi.
Comment
-
bài toán của mình giờ đơn giản thế này!! mong mọi người giúp cho.
porB 3pin đầu dc treo qua điện trở 10K nối với VCC + và nối với 3 hàng, 3pin tiếp theo nối với 3 cột của bàn phím 3X3
mình muốn code sao cho khi nhấn 1 nút bất kỳ thì một trong 3 pin đầu về 0V, hiển thị lên LED.
#include <main.h>
#define row1 pin_b0
#define row2 pin_b1
#define row3 pin_b2
#define col1 pin_b3
#define col2 pin_b4
#define col3 pin_b5
const char m[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
int nghin, tram, chuc, donvi;
int16 d;
void hienthiso(int c)
............
void main()
{
set_tris_b(0x07);// row1=row2=row3=1; col1=col2=col3=0
int a;
while(true)
{
if((pin_b0==0)|(pin_b1==0)|(pin_b2==0))a=30;
else a=10;
hienthiso(a);
delay_ms(1000);
}
}
chả hiểu mình code kiểu gì mà nó chỉ hiện a=10 mặc dù đã nhấn nút bàn phim, đo điện áp thì đúng khi có nhấn nút thì 1 trong các pin(0=>>2) băng 0V.
vậy tại sao?? nó phải hiển thị 30 khi nhấn 1 nút chứ??
Comment
-
Nguyên văn bởi lyxa_bk Xem bài viếtbài toán của mình giờ đơn giản thế này!! mong mọi người giúp cho.
porB 3pin đầu dc treo qua điện trở 10K nối với VCC + và nối với 3 hàng, 3pin tiếp theo nối với 3 cột của bàn phím 3X3
mình muốn code sao cho khi nhấn 1 nút bất kỳ thì một trong 3 pin đầu về 0V, hiển thị lên LED.
#include <main.h>
#define row1 pin_b0
#define row2 pin_b1
#define row3 pin_b2
#define col1 pin_b3
#define col2 pin_b4
#define col3 pin_b5
const char m[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
int nghin, tram, chuc, donvi;
int16 d;
void hienthiso(int c)
............
void main()
{
set_tris_b(0x07);// row1=row2=row3=1; col1=col2=col3=0
int a;
while(true)
{
if((pin_b0==0)|(pin_b1==0)|(pin_b2==0))a=30;
else a=10;
hienthiso(a);
delay_ms(1000);
}
}
chả hiểu mình code kiểu gì mà nó chỉ hiện a=10 mặc dù đã nhấn nút bàn phim, đo điện áp thì đúng khi có nhấn nút thì 1 trong các pin(0=>>2) băng 0V.
vậy tại sao?? nó phải hiển thị 30 khi nhấn 1 nút chứ??
Comment
-
Nguyên văn bởi lyxa_bk Xem bài viếtcái này mình thử rồi nhưng cũng không phải
ai giúp được không??
{
.......
}
Comment
-
Nguyên văn bởi lyxa_bk Xem bài viếtconst char m[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x9 0};
Comment
-
Nguyên văn bởi my_nghe_an Xem bài viếtcâu này có nghĩ là gì các bác nhỉ?
ý nghĩa :
m[0] = 0xC0;
m[1] = 0xF9;
.............
m[8] = 0x80;
m[9] = 0x90;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 queduong Xem bài viếtKhai báo mảng m với 10 phần tử giá trị đặt trước ( hằng số )
ý nghĩa :
m[0] = 0xC0;
m[1] = 0xF9;
.............
m[8] = 0x80;
m[9] = 0x90;
em tìm được cái này, đây là chương trình :
người ta viết bằng ccs với pic 16f887a
#include <main.h>
#include "1wire/1wire.c"
#include "ds18b20/ds18b20.c"
uint16_t count_t0=0;
uint8_t str[20];
#INT_RTCC
void ngat_tran() // Sau 1s thi cap nhat nhiet do len PC
{
count_t0++;
if(count_t0==4883)
{
count_t0=0;
puts(str); // Truyen gai tri nhiet do do duoc len PC
}
}
void main()
{
float Temp;
DDRA=0x00;
DDRC=0x82;
DDRD=0x00;
DDRE=0x00;
enable_interrupts(INT_TIMER0); // Cho phep ngat tran TIMER0
enable_interrupts(GLOBAL); // Cho phep ngat toan cuc
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // Cau hinh bo chia cho TIMER0
set_timer0(0x00); // Cau hinh gia tri cho thanh ghi TMR0
while(TRUE)
{
Temp=ds18b20_read();
sprintf(str,"Nhiet Do = %3.1f",Temp);
}
}
em có vài câu hỏi muốn hỏi, trong chương trình này: nếu không dùng timer có đọc được không? em thử rồi mà không được, nếu bỏ thì không đọc được,
thứ 2 là: nếu em đổi chân dữ liệu đưa từ DS18B20 vào chíp thành DDRE = 0x81 chẳng hạn
tức là chân nhận dữ liệu là chân RC0 thì sau khi đổi chân trong mô phỏng sao nó vẫn không đọc nhỉ? phải chăng là chỉ đọc được mỗi chân RC1 thôi ak?
một câu hỏi nữa là: vẫn dùng DDR(PORT) giống như avr để khai báo thay cho set_tris_port được ak các anh? với lại em thấy cái hàm *void ngat_tran* được định nghĩa ở trên sao ở trong chương trình chính không thấy gọi nhỉ?
vài câu hỏi thắc mắc mong nhận được câu trả lời, xin cám ơn
đây là link đầy đủ:
BÀI 5: ĐO NHIỆT ĐỘ VỚI DS18B20, GIÁ TRỊ ĐƯỢC TRUYỀN LÊN PC QUA RS232 | Diễn Đàn Vi Điều Khiển
Comment
-
Nguyên văn bởi queduong Xem bài viếtKhai báo mảng m với 10 phần tử giá trị đặt trước ( hằng số )
ý nghĩa :
m[0] = 0xC0;
m[1] = 0xF9;
.............
m[8] = 0x80;
m[9] = 0x90;
em tìm được cái này, đây là chương trình :
người ta viết bằng ccs với pic 16f887a
#include <main.h>
#include "1wire/1wire.c"
#include "ds18b20/ds18b20.c"
uint16_t count_t0=0;
uint8_t str[20];
#INT_RTCC
void ngat_tran() // Sau 1s thi cap nhat nhiet do len PC
{
count_t0++;
if(count_t0==4883)
{
count_t0=0;
puts(str); // Truyen gai tri nhiet do do duoc len PC
}
}
void main()
{
float Temp;
DDRA=0x00;
DDRC=0x82;
DDRD=0x00;
DDRE=0x00;
enable_interrupts(INT_TIMER0); // Cho phep ngat tran TIMER0
enable_interrupts(GLOBAL); // Cho phep ngat toan cuc
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // Cau hinh bo chia cho TIMER0
set_timer0(0x00); // Cau hinh gia tri cho thanh ghi TMR0
while(TRUE)
{
Temp=ds18b20_read();
sprintf(str,"Nhiet Do = %3.1f",Temp);
}
}
em có vài câu hỏi muốn hỏi, trong chương trình này: nếu không dùng timer có đọc được không? em thử rồi mà không được, nếu bỏ thì không đọc được,
thứ 2 là: nếu em đổi chân dữ liệu đưa từ DS18B20 vào chíp thành DDRE = 0x81 chẳng hạn
tức là chân nhận dữ liệu là chân RC0 thì sau khi đổi chân trong mô phỏng sao nó vẫn không đọc nhỉ? phải chăng là chỉ đọc được mỗi chân RC1 thôi ak?
một câu hỏi nữa là: vẫn dùng DDR(PORT) giống như avr để khai báo thay cho set_tris_port được ak các anh? với lại em thấy cái hàm *void ngat_tran* được định nghĩa ở trên sao ở trong chương trình chính không thấy gọi nhỉ?
vài câu hỏi thắc mắc mong nhận được câu trả lời, xin cám ơn
đây là link đầy đủ:
BÀI 5: ĐO NHIỆT ĐỘ VỚI DS18B20, GIÁ TRỊ ĐƯỢC TRUYỀN LÊN PC QUA RS232 | Diễn Đàn Vi Điều Khiển
Comment
-
Nguyên văn bởi my_nghe_an Xem bài viếtcám ơn anh nhiều, em muốn hỏi thêm cái nữa là em đang muốn đọc nhiệt độ từ cảm biến DS18B20 hiện thị lên virtual terminal
em tìm được cái này, đây là chương trình :
người ta viết bằng ccs với pic 16f887a
#include <main.h>
#include "1wire/1wire.c"
#include "ds18b20/ds18b20.c"
uint16_t count_t0=0;
uint8_t str[20];
#INT_RTCC
void ngat_tran() // Sau 1s thi cap nhat nhiet do len PC
{
count_t0++;
if(count_t0==4883)
{
count_t0=0;
puts(str); // Truyen gai tri nhiet do do duoc len PC
}
}
void main()
{
float Temp;
DDRA=0x00;
DDRC=0x82;
DDRD=0x00;
DDRE=0x00;
enable_interrupts(INT_TIMER0); // Cho phep ngat tran TIMER0
enable_interrupts(GLOBAL); // Cho phep ngat toan cuc
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_4); // Cau hinh bo chia cho TIMER0
set_timer0(0x00); // Cau hinh gia tri cho thanh ghi TMR0
while(TRUE)
{
Temp=ds18b20_read();
sprintf(str,"Nhiet Do = %3.1f",Temp);
}
}
em có vài câu hỏi muốn hỏi, trong chương trình này: nếu không dùng timer có đọc được không? em thử rồi mà không được, nếu bỏ thì không đọc được,
thứ 2 là: nếu em đổi chân dữ liệu đưa từ DS18B20 vào chíp thành DDRE = 0x81 chẳng hạn
tức là chân nhận dữ liệu là chân RC0 thì sau khi đổi chân trong mô phỏng sao nó vẫn không đọc nhỉ? phải chăng là chỉ đọc được mỗi chân RC1 thôi ak?
một câu hỏi nữa là: vẫn dùng DDR(PORT) giống như avr để khai báo thay cho set_tris_port được ak các anh? với lại em thấy cái hàm *void ngat_tran* được định nghĩa ở trên sao ở trong chương trình chính không thấy gọi nhỉ?
vài câu hỏi thắc mắc mong nhận được câu trả lời, xin cám ơn
đây là link đầy đủ:
BÀI 5: ĐO NHIỆT ĐỘ VỚI DS18B20, GIÁ TRỊ ĐƯỢC TRUYỀN LÊN PC QUA RS232 | Diễn Đàn Vi Điều Khiển
--- Muốn đọc vào chân RC0 ( bạn xem ở trong thư viện ( file ) ds18b20.c , 1wire.c xem trong đó nó dùng chân nào ... thì sửa trong đó )
Set tris hay DDR phụ thuộc vào cái trình dịch quy định ( Thông thường với PIC ... hay dùng SET tris ) ... Các câu lệnh đều có ý nghĩa như nhau ( đó là tác động để dùng 1 chân nào đó làm chân vào Hay Ra ) ... PIC thì input giá trị 1 , output giá trị 0
--- Không dùng ngắt thì dùng delay ... mục đích của cái ngắt timer để cập nhật 1 giây 1 lần
while(TRUE)
{
Temp=ds18b20_read();
sprintf(str,"Nhiet Do = %3.1f",Temp);
_delay_ms(1000); trễ 1 giây
puts(str); // Truyen gai tri nhiet do do duoc len PC
}
--- Bạn xóa hết chương trình trong ngắt đi ... mà xóa luôn cả cái dòng màu đỏ ( cái này để truyền dữ liệu lên ) ... khi xóa hết đi thì ... nó không truyền là phải thôi , Kêu gì nữa !
--- Ngắt chẳng cần gọi hàm ... Khi nào xảy ra ngắt CPU sẽ tự động lôi cái hàm đó ra . ( Ở trên là ngắt timer ... CPU cứ cấp xung , bao giờ tràn timer thì xảy ra ngắt ... Xảy ra ngắt thì tự chui vào hàm ngắt thô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
Bài viết mới nhất
Collapse
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi nhathung1101Ra cửa hàng điện tử bất kỳ.
Dõng dạc hét lên:
- Cho 1 con 4558.
Có luôn. Nó chỉ là con Opamp cùi bắp thông thường thôi mà. Giá 2k hay 3k gì đó.
Nếu muốn âm thanh hay hơn, thì mua NE5535, mất 2 cốc beer thôi.-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 22:38 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi nhathung1101Mạch dùng được, nhưng phải kết hợp với Transistor NPN công suất bên ngoài. Loại chịu điện áp cao, dòng lớn.
Loại mạch này nhái theo cái loại IC họ STR trong mấy cái ti vi cổ lỗ ngày xưa thôi mà. Còn được gọi là "ổn áp...-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 22:28 -
-
Trả lời cho Tìm linh kiện sửa loa vi tính.bởi Nikon57
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:36 -
-
bởi Nikon57Bộ loa vi tính Microlap cũ của tôi tầng tiền khuyêchs đại bị lỗi. Sau kiểm tra , nguyên nhân là do con chíp 4558D JRC 0077C chết nóng rực. Không thêt tìm được con IC đúng nguyên mã như vậy, để thay thế tôi có thể thay bawngfcon IC 4558 JRC 0058T được không? Mong các bác thành thạo cho ý kiến.
-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 21:36 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi dinhthuong80Mạch trên nếu dùng vào việc khác ( theo người thiết kế ra nó) thì cũng được: làm mạch tiền khuếch đại (pre-Amply) cho "con sò công suất" hay mạch công suất, để chạy cái loa cũng tạm ok.
Các chữ E,B,C trên mạch trên gắn...-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 16:47 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi iTronvây là mình đã hiểu lí do vì sao ông ấy lại đưa mình nguyên hộp có hơn chục cái mạch này trong đó...
-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 12:21 -
-
Trả lời cho Hỗ trợ tìm linh kiện mạch hạ áp 220V - 110Vbởi mèomướpDạ mạch này hông dùng được ạ. Chú sang chị hàng xóm mượn cái cuốc kiếm góc nào trong bản có nhìu người qua lại để trồng 1 cây cải ngồng, ngày ngày chú chịu khó qua đấy tưới chăm cho nó lớn ạ, vài tháng sau nó to chú mang ra chợ bán...
-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 12:13 -
-
bởi iTronEm được ông anh cho mạch như hình, nhờ ace trong diễn đàn xem giúp mạch này dùng ổn ko và dùng linh kiện công suất nào thì phù hợp.
Xin cảm ơn...-
Channel: Hướng dẫn tìm thông tin linh kiện
Hôm qua, 11:27 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Vì sản phẩm của họ dân mình có dùng, và có lẽ cũng không phải là không phổ biến, nên ĐT quyết định gởi thư điện tử tiếng Anh cho họ như sau, ( đã sửa vài từ như được góp ý, vì nếu lịch sự thì dù vòng vo cũng nên phản hồi, vì...
-
Channel: Tâm tình dân kỹ thuật
25-02-2025, 16:36 -
-
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
23-02-2025, 07:44 -
Comment