PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   Pic16f877a TỪ DỄ TỚi KhÓ (http://www.picvietnam.com/forum/showthread.php?t=238)

laka 16-04-2009 11:42 AM

mình dùng mikroc.

namlong782004 17-04-2009 11:47 AM

Thắc mắc
 
Trích:

Nguyên văn bởi namqn (Post 9097)
Khai báo 'count1 equ 0x20' cho trình dịch biết count1 có giá trị là 0x20. Đây là địa chỉ được dùng trong chương trình để truy xuất biến, là một ô nhớ nằm ở địa chỉ 0x20 (trong RAM của PIC).

Đây chỉ là một trong nhiều ứng dụng của directive equ, vốn dùng để làm cho symbol bên trái nó mang giá trị nằm bên phải nó.

Bạn có thể dùng thẳng địa chỉ 0x20 trong chương trình, nhưng nếu chương trình của bạn có nhiều biến và sau thời gian vài tuần, khi đọc lại chương trình bạn có khả năng không hiểu được ô nhớ đó mang ý nghĩa gì.

Thân,

Xin lổi vì có một thac mắc nhỏ:
Trong 8051, thường câu lệnh này để khai báo biến count1 bằng giá trị 0X20. Để khai báo byte nhớ : Count1 DB 0X20. Không biết lời giải thích trên có chính xác or là trong PIC nó khác.

namqn 17-04-2009 05:35 PM

Trích:

Nguyên văn bởi namlong782004 (Post 24885)
Xin lổi vì có một thac mắc nhỏ:
Trong 8051, thường câu lệnh này để khai báo biến count1 bằng giá trị 0X20. Để khai báo byte nhớ : Count1 DB 0X20. Không biết lời giải thích trên có chính xác or là trong PIC nó khác.

Với 8051, count1 trong "count1 equ 0x20" vẫn không phải là biến, mà chỉ là một giá trị hằng (0x20). count1 trong "count1: DB 0x20" là một nhãn để truy xuất giá trị hằng 0x20 trong vùng bộ nhớ chương trình hay vùng bộ nhớ cho const (giá trị của count1 lúc này không thể xác định trước, vì nó do trình hợp dịch cấp phát).

Thân,

tienc14 20-04-2009 10:52 AM

Em mới nghiên cứu Về Pic, đọc bài viết của bác Chính rất hay và dễ hiểu. Rât mong bác Chính tiếp tục post bài thường xuyên.

ducbinh 21-04-2009 10:30 AM

Em cũng mới học PIC ,thử viết một đoạn chương trình gửi tín hiệu từ bộ chuyển đổi ADC có sẵn trong PIC lên máy tính nhưng mô phỏng bằng Protues mà chưa thấy chạy,mọi người xem xét chỉnh sửa lại đoạn code cho mình với ,Thanks

#include <16f877a.h>
#include <def_877a.h>
#device *=16 ADC = 10
#fuses NOWDT,HS,NOPUT,NOPROTECT,NODEBUG,NOBROWNOUT,NOLVP, NOCPD,NOWRT
#use delay(clock = 20000000)
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bi ts=9)
#int_ad

conversion_isr()
{
char c;
float value;
value = read_adc();
c=(char)value;
putc(c);
}
void main()
{
trisa=0xff;
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
delay_us(10);

enable_interrupts(int_ad);
enable_interrupts(GLOBAL);
while(1);
}

ducbinh 21-04-2009 10:37 AM

Trích:

Nguyên văn bởi laka (Post 24833)
có bạn nào chỉ giúp mình cách thiết lập interrupt serial port của pic16f877a được không?
cảm ơn nhiều...!

enable_interrupts(int_rda); //thiết lập ngặt nhận
enable_interrupts(int_tbe); //thiết lập ngặt truyền
enable_interrupts(GLOBAL);

#INT_RDA //Hàm xử lí ngắt truyền
Receive_isr() {};
#INT_TBE //Hàm xử lí ngắt nhận
Tranmit_isr() {};

laka 22-04-2009 10:40 PM

cảm ơn bạn ducbinh.

laka 22-04-2009 10:53 PM

có anh em nào chỉ giúp mình thật đơn giản về cách thiết lập chức năng counter của 16f877a được không? mình có tìm hiểu rồi, nhưng còn rất mơ hồ về vấn đề đếm đồng độ và không đồng bộ.
cảm ơn nhiều...!

hoangquan_d 23-04-2009 08:41 PM

các bác giúp với, em đang tìm sơ đồ mạch điều khiển động cơ step dùng pic 16f877a sử dụng nút nhấn( đièu khiển thuận nghịch) mà chưa có. bác nào có thi post lên cho em xin. cảm ơn nhiều

newboystylew 06-05-2009 09:20 PM

anh nct oi cho em hỏi: trên broad điều khiển của mạch đồng hồ thời gian thục RTC thì J2,J3,J5,J6 được nối đi đâu

phamgon 15-05-2009 12:16 AM

Chào tất cả mọi người!Em là người mới bắt đầu tìm hiểu về Pic! Mong sau này sẽ được sự chỉ giáo nhiệt tình của mọi người!
Cho em hỏi đã có những bài tiếp theo Pic16f877a TỪ DỄ TỚi KhÓ chưa ah!
Cảm ơn Bác Chính đã viết ra làm tài liệu cho anh em tham học hỏi! mong bác viết chi tiết nuă để những người tự tìm hiểu về Pic như em có thể hiểu được!
thân!!

the_duyet 23-05-2009 09:03 PM

Trích:

Nguyên văn bởi luongnhut (Post 24758)
e đang xài thạch anh 20Mhz,2 tụ 33p cho con 16f877a, mạch chay tốt mà không hiểu tại sao khi e lấy tay chạm vào 1 chân thạch anh nối vào chân OSC1/CLK(13) thi mạch bị đứng lại, thả tay ra lại hoạt động binh thường, mấy pác giúp e khắc phục lỗi này của e với

sao giống mình thế.mình cũng hỏi nhưng ko có ai trả lời.mỗi tội cái của mình nó chạy ko ổn định.chứ ko như bạn là chạy tốt.đi hỏi ngoài thì có người bảo thay tụ 33p=22p(đã thay nhưng vẫn vậy).còn bản chất ở đâu thì mình chịu chết.

bk_bfp 23-05-2009 09:10 PM

cảm ơn anh ntc đã viết bài này, em đang nghiên cứu về pic để làm mạch robot. em cũng chỉ là beginner nên sẽ rất nhiều nhũng bài viết như thế này của anh. Thanks

falleaf 23-05-2009 10:24 PM

Đề tài này đã cũ, nên chúng tôi khóa lại.

Hiện nay tất cả các sản phẩm sử dụng PIC16F877A đều có thể thay thế bằng PIC16F887 với giá thành thấp hơn nhiều, vì vậy, chúng ta sẽ không phân tích phát triển PIC16F877A nữa mà chuyển qua sử dụng PIC16F887 hết các bạn ạ.

Những kỹ thuật và nội dung sử dụng cho 877A đều có thể thay thế và sử dụng trên 887. Tuy nhiên, cứ thảo luận về 877A thì sẽ làm cho những người đi sau hiểu sai về PIC và sẽ không phát triển đúng hướng.

Chúc vui.


Múi giờ GMT. Hiện tại là 10:42 AM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam