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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 06-05-2008, 02:13 AM   #1
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
adcHI và adcLO là các biến kiểu char (8-bit), không phải là lệnh.

Trong đoạn lệnh mà bạn đã đưa ra, kết quả của việc biến đổi A/D được tách thành 2 phần, phần cao chứa trong adcHI, còn 5 bit thấp hơn của kết quả được chứa trong adcLO. Bit 7 của adcLO được bật.

Sau đó adcHI và adcLO được xuất ra thông qua hàm putc().

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2008, 07:49 AM   #2
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Trích:
Nguyên văn bởi namqn View Post
adcHI và adcLO là các biến kiểu char (8-bit), không phải là lệnh.

Trong đoạn lệnh mà bạn đã đưa ra, kết quả của việc biến đổi A/D được tách thành 2 phần, phần cao chứa trong adcHI, còn 5 bit thấp hơn của kết quả được chứa trong adcLO. Bit 7 của adcLO được bật.

Sau đó adcHI và adcLO được xuất ra thông qua hàm putc().

Thân,


Cảm ơn anh , nhưng anh có thể giải thích rõ hơn cho em doạn lệnh sau ví dụ như (adcValue>>5)&0x1f có nghĩa như thế nào)
adcHI = (char)((adcValue >> 5)& 0x1f);
adcLO = (char)((adcValue & 0x1f)|0x80);
Anh còn bảo là bit 7 của adcLO được bật là sao ha anh?
Rất mong thư!
tyhon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2008, 09:24 AM   #3
namqn
Trưởng lão PIC bang
 
Tham gia ngày: Feb 2006
Nơi Cư Ngụ: Tp. HCM, Việt Nam
Bài gửi: 3,025
:
Send a message via Yahoo to namqn
Trích:
Nguyên văn bởi tyhon View Post
Cảm ơn anh , nhưng anh có thể giải thích rõ hơn cho em doạn lệnh sau ví dụ như (adcValue>>5)&0x1f có nghĩa như thế nào)
adcHI = (char)((adcValue >> 5)& 0x1f);
adcLO = (char)((adcValue & 0x1f)|0x80);
Anh còn bảo là bit 7 của adcLO được bật là sao ha anh?
Rất mong thư!
Bạn hỏi như vậy tôi đoán là bạn chưa học gì về kỹ thuật số, lập trình C, ... Bạn có thể cho biết bạn đang học ở bậc nào, nếu học đại học thì đến năm thứ mấy, ngành gì. Thông tin về nền tảng kiến thức của bạn sẽ giúp người khác có cách giải thích phù hợp cho bạn (mặc dù đôi khi bạn có thể đặt người khác vào tình huống tương tự như giải thích về tích phân cho học sinh cấp hai).

Thân,
__________________
Biển học mênh mông, sức người có hạn.

Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau:
http://www.picvietnam.com/forum/showthread.php?t=1263
namqn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-06-2010, 06:47 PM   #4
pocolo276
Nhập môn đệ tử
 
Tham gia ngày: Jun 2010
Bài gửi: 3
:
là gà Pic.Nên cho mình hỏi lỗi này trong CCS
Hình Kèm Theo
File Type: bmp timloisai.bmp (384.1 KB, 29 lần tải)
pocolo276 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-01-2011, 10:04 AM   #5
Mr.Bi
Đệ tử 7 túi
 
Tham gia ngày: Jul 2007
Nơi Cư Ngụ: Đà Nẵng
Bài gửi: 188
:
Trích:
Nguyên văn bởi pocolo276 View Post
là gà Pic.Nên cho mình hỏi lỗi này trong CCS
chữa lại (bỏ 2 dòng đó đi)
Code:
// long CCP_1
 // long CCP_2
tui không hiểu vì sao trong thư viện của u lại có vậy ,vì tui nhìn dòng bên dưới thì thấy đã định nghĩa
Code:
# byte CCP_1 ...
# byte CCP_2
Mr.Bi vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-04-2012, 10:42 AM   #6
lt10dkdt
Nhập môn đệ tử
 
Tham gia ngày: Mar 2012
Bài gửi: 1
:
Trích:
Nguyên văn bởi tyhon View Post
Em có đoạn code sau nhưng em không hiểu là lệnh adcHI và adcLO làm gì (với khai báo
char adcHI,adcLO).Anh nào giải thích hộ em

Code:
   while(TRUE)
        {
               adcValue = read_adc(); // Get ADC reading
 
               adcHI = (char)((adcValue >> 5)& 0x1f);       
               adcLO = (char)((adcValue & 0x1f)|0x80);     
                      
               putc(adcHI);  
               putc(adcLO);   
 
               delay_ms(10);  // Preset delay, repeat every 10ms
        }
}
em có đoạn code sau.tình hình là như thế này.em kết hợp nút ấn bên ngoài với ngắt. đoạn nhấp nháy thì oke hết rùi.nhưng khi khai báo ở void main thì toàn báo lỗi ở *case" ai biết chỉ dùm em với.em đang học về pic thôi.tim mãi mà không ra:

#include "16f877a.h"
#use delay(clock=20000000)
#int_rb

unsigned char x,i,a,b,tre;
int16 mode;

void trai()// chuong trinh con nhay trai sang
{

x=0x01;
output_d(x);
delay_ms(tre);
for(i=1;i<=7;i++)
{x=x<<1;
output_d(x);
delay_ms(tre);
}
}

void phai()//chuong trinh con nhay phai sang
{

x=0x80;
output_d(x);
delay_ms(tre);
for(i=1;i<=7;i++)
{
x=x>>1;
output_d(x);
delay_ms(tre);
}
}

void trong() //chuong trinh con nhay trong ra
{
a=0x01;
b=0x80;
for(i=1;i<=7;i++)
{
a<<=1;
b>>=1;
output_d(a|b);
delay_ms(tre);
}
}
void ngat()
{
if(input(pin_b0))
if(mode<2)mode++;//chuyen che do tang len o b0
if(input(pin_b1))
if(mode<0 )mode--;//chuyen che do tang len o b1
if(input(pin_b2))
if(tre<100) tre=tre+100;//tang thoi gian tre cho led
if(input(pin_b3))
if(tre>100) tre=tre-100;//giam thoi gian tre cho led

}

void main()
{
set_tris_b(0xff);
enable_interrupts(int_rb);
enable_interrupts(GLOBAL);

mode=0;
while (true)
case 0: trai();break;
case 1: phai();break;
case 2: trong();break;
}
lt10dkdt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 28-08-2012, 05:25 PM   #7
vietthanh123
Nhập môn đệ tử
 
Tham gia ngày: Apr 2011
Bài gửi: 3
:
Trích:
Nguyên văn bởi lt10dkdt View Post
đoạn nhấp nháy thì oke hết rùi.nhưng khi khai báo ở void main thì toàn báo lỗi ở *case" ai biết chỉ dùm em với.em đang học về pic thôi.tim mãi mà không ra:
Báo lỗi vì cấu trúc của hàm case bị thiếu. Cấu trúc có nó là:
switch (cmd)
{
case 0: sthing;
break;
case 1: sthing;
break;
case 2: sthing;
break;

}
vietthanh123 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 06-05-2008, 11:28 PM   #8
vandungevn
Đệ tử 5 túi
 
Tham gia ngày: Oct 2006
Bài gửi: 116
:
Send a message via Yahoo to vandungevn
ADC trong PIC có 10bit. adcHI là chứa 5 bits cao của 10 bits, còn adcLO chứa 5 bit thấp như vậy là ghép lại thành 10 bit ad rồi đó:d. còn '>>' có nghĩa là dịch trai 1111100000 >> 5 = 0000011111 => giá trị của adcHI được đưa vào 1 byte là 00011111, như vậy có 5 bit cao của adc 10 bit . x 0x1f, giữ nguyên giá trị của 5 bit cao để khỏi lẫn giá trị của byte thấp, em thử lấy 1 phép toán nào đó làm ví dụ thì thấy ngay. adcLO việc bit 7 của adcLO được bật để phân biệt adcHI và adcLO khi chuyển lên nếu ko thì ko biết mình nhận nó là byte thấp hay byte cao.
__________________
Hãy chung sức vì nền Điện Tử Viêt Nam...! Sản Phẩm thương hiệu Việt "Made in Viet Nam"
Nguyen Van Dung - Nguyễn Văn Dũng. Mobile : (+84) 97 329 1368
Nick name : VanDungEvn ( Yahoo + Skype )
Tư vấn & thiết kế điện tử + Làm mạch in + Hoàn thiện sản phẩm điện tử. Mạch nạp 89-PIC-AVR.
Email: vandungevn@gmail.com Website: www.dientuphuongdung.com
Xóm Mới - Nguyên Xá - Minh Khai - Từ Liêm - Hà Nôi - Viet Nam.
vandungevn vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 07-05-2008, 04:57 AM   #9
tyhon
Đệ tử 1 túi
 
Tham gia ngày: Nov 2007
Bài gửi: 22
:
Trích:
Nguyên văn bởi vandungevn View Post
ADC trong PIC có 10bit. adcHI là chứa 5 bits cao của 10 bits, còn adcLO chứa 5 bit thấp như vậy là ghép lại thành 10 bit ad rồi đó:d. còn '>>' có nghĩa là dịch trai 1111100000 >> 5 = 0000011111 => giá trị của adcHI được đưa vào 1 byte là 00011111, như vậy có 5 bit cao của adc 10 bit . x 0x1f, giữ nguyên giá trị của 5 bit cao để khỏi lẫn giá trị của byte thấp, em thử lấy 1 phép toán nào đó làm ví dụ thì thấy ngay. adcLO việc bit 7 của adcLO được bật để phân biệt adcHI và adcLO khi chuyển lên nếu ko thì ko biết mình nhận nó là byte thấp hay byte cao.
Anh cho em hỏi:
code
Trích:
Nguyên văn bởi tyhon View Post
while(TRUE)
{
adcValue = read_adc(); // Get ADC reading

adcHI = (char)((adcValue >> 5)& 0x1f);
adcLO = (char)((adcValue & 0x1f)|0x80);

putc(adcHI);
putc(adcLO);

delay_ms(10); // Preset delay, repeat every 10ms
}
}.
Thế ở đây không biết dịch bit để làm gì anh nhỉ ? Tại sao không cho adcHI nhận luôn 5 bit cao của adc trong PIC

thay đổi nội dung bởi: tyhon, 07-05-2008 lúc 05:07 AM.
tyhon vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2008, 03:04 PM   #10
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
em đang sai ccsc p3.249. các anh có phiên bản nào mới cho tôi xin link với
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2008, 03:47 PM   #11
love_ac
Đệ tử 4 túi
 
Tham gia ngày: Apr 2008
Nơi Cư Ngụ: Hanoi
Bài gửi: 78
:
Trích:
Nguyên văn bởi tungtot_vl View Post
em đang sai ccsc p3.249. các anh có phiên bản nào mới cho tôi xin link với
Bạn thử link này:
http://rs152.rapidshare.com/files/10..._4.069_Upd.rar

thay đổi nội dung bởi: love_ac, 22-05-2008 lúc 04:05 PM.
love_ac vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 22-05-2008, 03:48 PM   #12
hanspkt
Đệ tử 3 túi
 
Tham gia ngày: Aug 2006
Bài gửi: 55
:
Trích:
Nguyên văn bởi tungtot_vl View Post
em đang sai ccsc p3.249. các anh có phiên bản nào mới cho tôi xin link với
bạn vào đây:
http://www.picvietnam.com/forum//forumdisplay.php?f=10
hanspkt vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-05-2008, 11:57 AM   #13
tungtot_vl
Đệ tử 6 túi
 
tungtot_vl's Avatar
 
Tham gia ngày: Jul 2007
Bài gửi: 154
:
cảm ơn 2 bác nhiều.
tungtot_vl vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 02-06-2008, 10:35 AM   #14
bean984
Đệ tử 3 túi
 
Tham gia ngày: Dec 2007
Bài gửi: 51
:
mình đang làm về giao tiếp 2 con 16f877a theo chuẩn RS485. Con slave đọc giá trị adc. Con master thì liên tục yêu cầu con slave gửi trả giá trị adc để hiển thị lên lcd.
mình thực hiện như sau:

main()
{
//khởi tao các gtri ban đầu
...
while(true)
{
transmit(2,0,0,0);//gửi chuỗi '2000' để yêu cầu slave truyền về giá trị adc
delay_ms(500);//trễ thời gian nhận giá trị adc
}
}
nếu như để lệnh hỏi ngoài vòng while thì nó hoạt động tốt, nhưng khi cho vào trong vòng while thì nó chỉ thực hiện được một lệnh đầu tiên. các lần tiếp theo thì lại không đúng nữa.
thanks mọi người nhiều.
bean984 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 03-06-2008, 12:05 PM   #15
andyhug
Đệ tử 1 túi
 
andyhug's Avatar
 
Tham gia ngày: Jun 2008
Nơi Cư Ngụ: Lê Duẩn - Hà Nội
Bài gửi: 23
:
Em mới hoc PIC, em đã load dược CCSC For PIC 4.09, MPLAB IDE 8.10, ICProg105D, các bác ai biết thì chỉ giúp em cách mô phỏng cụ thể với? (Từ mô phỏng các cổng, timer, các thanh ghi...)
Cảm ơn các bác!
andyhug vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lờ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à 01:56 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