![]() |
|
![]() |
#1 | |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
thay dổi tốc độ LED ngoài
Trích:
em viết lại bài này ,thông báo không có lỗi gì,nhưng khi mô phỏng proteus thì không nhấp nháy dc.các bác kiểm tra hộ em phát //thay doi toc do nhap nhay LED theo cac bit vao RB4-RB7 //RB0-RB3 bit ra //khai bao cong vao ra #use fast_io(b) #byte portb = 0x06 #byte intcon = 0x000B #bit RB4 = portB.4 #bit RB5 = portB.5 #bit RB6 = portB.6 #bit RB7 = portB.7 #bit RBIF = intcon.0 //dinh nghia ham ngat RB #bit RBIE = intcon.3 //dinh nghia bit ngat RB int LED = 0,speed; //tao ham ngat #int_ext void ngat_RB(){ IF((RBIE)&&(RBIF)){ if(RB4==0){ LED = 0x01;//den 1 sang speed = 500; } if(RB5==0){ LED = 0x03;//den 1 va 2 sang speed = 300; } if(RB6==0){ LED = 0x07;//den 1 2 3 sang speed = 200; } if(RB7 ==0){ LED = 0x0f; speed = 50; } RBIF = 0; } } //ham chinh void main(){ set_tris_b(0b11110000); //dinh nghia cong vao ra portb = 0x00; //bit cao thap enable_interrupts(int_ext); ext_int_edge(H_to_L); enable_interrupts(global); while(true){ portB = LED; delay_ms(speed); portB = 0; delay_ms(speed); } } |
|
![]() |
![]() |
#2 |
Đệ tử 9 túi
|
Giải mã bàn phím
Mạch quét 16 phím, hiện kết quả lên led 7 đoạn.
Code:
//***************************************************************************** // Author : nhh // Date : 03/04/06 // Hardware: PIC16F877A //***************************************************************************** #include <16F877A.h> #fuses NOWDT,PUT,XT,NOPROTECT #use delay(clock=4000000) #use fast_io(b) #use fast_io(c) #byte portb = 0x06 #byte portc = 0x07 #bit RB0 = 0x06.0 #bit RB1 = 0x06.1 #bit RB2 = 0x06.2 #bit RB3 = 0x06.3 #bit RB4 = 0x06.4 #bit RB5 = 0x06.5 #bit RB6 = 0x06.6 #bit RB7 = 0x06.7 #bit RBIF=intcon.0 //dinh nghia co ngat RB #bit RBIE=intcon.3 //dinh nghia bit cho phep ngat RB int a; const unsigned char dig[]={0b00111111,0b00000110, 0b01011011,0b01001111,\ 0b01100110,0b01101101,0b01111101,0b00000111,0b01111111,0b01101111,0b01110111,\ 0b01111100,0b00111001,0b01011110,0b11111001,0b11110001}; // ma hoa digital duoi dang mang // Chuong trinh ngat #int_RB void ngat_RB() { if((RBIF)&&(RBIE)) { { if(RB4&&RB0) a=dig[0]; } { if(RB4&&RB1) a=dig[4]; } { if(RB4&&RB2) a=dig[8]; } { if(RB4&&RB3) a=dig[12]; } //....... { if(RB5&&RB0) a=dig[1]; } { if(RB5&&RB1) a=dig[5]; } { if(RB5&&RB2) a=dig[9]; } { if(RB5&&RB3) a=dig[13]; } //........ { if(RB6&&RB0) a=dig[2]; } { if(RB6&&RB1) a=dig[6]; } { if(RB6&&RB2) a=dig[10]; } { if(RB6&&RB3) a=dig[14]; } //........ { if(RB7&&RB0) a=dig[3]; } { if(RB7&&RB1) a=dig[7]; } { if(RB7&&RB2) a=dig[11]; } { if(RB7&&RB3) a=dig[15]; } RBIF=0; //Xoa co ngat RB } } // Chuong trinh chinh main() { set_tris_b(0b11110000); set_tris_c(0); enable_interrupts(global); enable_interrupts(int_RB); ext_int_edge(H_to_L); portb=0; portc=0; while(true) { portb=1; portb=2; portb=4; portb=8; portc=a; } } ![]() thay đổi nội dung bởi: nhh, 09-07-2007 lúc 09:08 PM. Lý do: Update |
![]() |
![]() |
#3 |
PIC Bang chủ
|
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=4000000) Bạn chú ý, clock = 4MHz là chế đọ dao động XT chứ không phải HS. Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
![]() |
![]() |
#4 |
Nhập môn đệ tử
Tham gia ngày: Nov 2005
Bài gửi: 2
: |
Gửi nhh:
Bài : Giải mã bàn phím Mạch quét 16 phím, hiện kết quả lên led 7 đoạn. Trong chuong trinh thieu dinh nghia #byte intcon=0x000B và port xuất ra led 7 đoạn là PORTC không phải portd như hình vẽ. |
![]() |
![]() |
#5 | |
Đệ tử 9 túi
|
![]() Trích:
Để cho việc viết chương trình được thuận lợi hơn, những lần sau nên include cái file DEFS_16F877A.h vào để không phải khai báo dài dòng nữa !
__________________
Ngày mai bắt đầu từ ngày hôm nay Bạn có thắc mắc, bạn cần sự hỗ trợ của các thành viên. Hãy đọc luồng này: http://www.picvietnam.com/forum//showthread.php?t=1263 |
|
![]() |
![]() |
#6 | |
Đệ tử 2 túi
Tham gia ngày: Nov 2005
Bài gửi: 45
: |
Trích:
Chúc sức khỏe. hpecom.
__________________
Biết thì nói là biết, Không biết thì nói là không biết, .. |
|
![]() |
![]() |
#7 | |
Đệ tử 2 túi
|
Mình thay led 7 đoạn bằng LCD thì không chạy được
Trích:
|
|
![]() |
![]() |
#8 | |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
Trích:
portb=2; portb=4; portb=8; portc=a; lệnh gán này không biết có ý nghĩa gì nhỉ? thank! |
|
![]() |
![]() |
#9 | |
Trưởng lão PIC bang
|
Trích:
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 |
|
![]() |
![]() |
#10 |
Đệ tử 6 túi
Tham gia ngày: Oct 2006
Bài gửi: 147
: |
anh có thể nói rõ hơn được không a? số: 1,2,4,6,8 nó mặc định cho cổng đấy a?
|
![]() |
![]() |
#11 | |
Trưởng lão PIC bang
|
Trích:
- Xuất 2 ra PORTA thì chỉ có bit 1 (tức là chân RA1) ở mức 1, các bit (chân) khác là 0. - Xuất 4 ra PORTA thì chỉ có bit 2 (tức là chân RA2) ở mức 1, các bit (chân) khác là 0. - Xuất 8 ra PORTA thì chỉ có bit 3 (tức là chân RA3) ở mức 1, các bit (chân) khác là 0. Bạn nhìn vào sơ đồ mạch của nhh sẽ thấy các chân RA0 .. RA3 nối với các cột của bàn phím. 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 |
|
![]() |
![]() |
#12 |
Đệ tử 1 túi
Tham gia ngày: Apr 2006
Bài gửi: 12
: |
xin lỗi các huynh cho tiểu đẹ hỏi 1 câu ngu dốt...các huynh có tài liệu asem về pic không?cho em 1 bản
rất cám ơn idiot0910@yahoo.com |
![]() |
![]() |
#13 | |
Trưởng lão PIC bang
|
Trích:
![]() Nếu bạn cần tài liệu về hợp ngữ cho PIC16 thì download tài liệu này: http://ww1.microchip.com/downloads/e...Doc/33014J.pdf 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 |
|
![]() |
![]() |
#14 |
Đệ tử 5 túi
Tham gia ngày: Oct 2005
Bài gửi: 117
: |
Sử dụng CCS cho việc lập trình PIC là rất hay và tiện lợi.Truoc day ban noisepic có đề cập cách lập trình cho ccs khá hay. Ta sẽ khai báo thêm một file định nghĩa các thanh ghi của pic kiểu như :
#byte PORTA =0x05 #byte PORTB =0x06 #byte PORTC =0x07 #byte PORTD =0x08 #byte PORTE =0x09 ... #byte EEDATA =0x10C #byte EEADR =0x10D #byte EEDATH =0x10E #byte EEADRH =0x10F #byte ADCON0 =0x1F #byte ADCON1 =0x9F #byte ADRESH =0x9F #byte ADSESL =0x9F sau đó ta có thể sử dụng lệnh gán PortB = 0x00 để xuất sẽ tiện hơn nhiều. Mình lập trình cho CCS đều dùng kiểu này. Khi đó ta sẽ vừa tận dụng được các hàm có sẵn của CCS vừa thao tác trực tiếp các thanh ghi như bên ASM. Mình có viết một cái TUT về CCS này và đã gửi cho a F. Hy vọng sẽ sớm pót lên cho mọi người tham khảo. Chúc thành công với CCS
__________________
CallerID, Ethernet-RS232, PICWEB, Cảnh báo BTS Giải pháp toàn diện giám sát - điều khiển từ xa qua GSM/Internet 0988006696 http://linhnc308.blogspot.com linhnc308@gmail.com |
![]() |
![]() |
#15 |
Đệ tử 5 túi
Tham gia ngày: Oct 2005
Bài gửi: 117
: |
1. Tổng quan về CCS
1.1. Vì sao ta sử dung CCS ? Sự ra đời của một loại vi điều khiển đi kèm với việc phát triển phần mềm ứng dụng cho việc lập trình cho con vi điều khiển đó. Vi điều khiển chỉ hiểu và làm việc với hai con số 0 và 1. Ban đầu để việc lập trình cho VĐK là làm việc với dãy các con số 0 và 1. Sau này khi kiến trúc của Vi điều khiển ngày càng phức tạp, số luợng thanh ghi lệnh nhiều lên, việc lập trình với dãy các số 0 và 1 không còn phù hợp nữa, đòi hỏi ra đời một ngôn ngữ mới thay thế. Và ngôn ngữ lập trình Assembly. Ở đây ta không nói nhiều đến Assmebly. Sau này khi ngôn ngữ C ra đời, nhu cầu dùng ngôn ngữ C đề thay cho ASM trong việc mô tả các lệnh lập trình cho Vi điều khiển một cách ngắn gọn và dễ hiểu hơn đã dẫn đến sự ra đời của nhiều chương trình soạn thảo và biên dịch C cho Vi điều khiển : Keil C, HT-PIC, MikroC, CCS… Tôi chọn CCS cho bài giới thiệu này vì CCS là một công cụ lập trình C mạnh cho Vi điều khiển PIC. Những ưu và nhược điểm của CCS sẽ được đề cập đến trong các phần dưới đây. 1.2. Giới thiệu về CCS ? CCS là trình biên dịch lập trình ngôn ngữ C cho Vi điều khiển PIC của hãng Microchip. Chương trình là sự tích hợp của 3 trình biên dich riêng biết cho 3 dòng PIC khác nhau đó là: - PCB cho dòng PIC 12-bit opcodes - PCM cho dòng PIC 14-bit opcodes - PCH cho dòng PIC 16 và 18-bit Tất cả 3 trình biên dich này đuợc tích hợp lại vào trong một chương trình bao gồm cả trình soạn thảo và biên dịch là CCS, phiên bản mới nhất là PCWH Compiler Ver 3.227 Giống như nhiều trình biên dich C khác cho PIC, CCS giúp cho người sử dụng nắm bắt nhanh được vi điều khiển PIC và sử dụng PIC trong các dự án. Các chương trình diều khiển sẽ được thực hiện nhanh chóng và đạt hiệu quả cao thông qua việc sử dụng ngôn ngữ lạp trình cấp cao – Ngôn ngữ C Tài liệu hướng dẫn sử dụng có rất nhiều, nhưng chi tiết nhất chính là bản Help đi kèm theo phần mềm (tài liệu Tiếng Anh). Trong bản trợ giúp nhà sản xuất đã mô tả rất nhiều về hằng, biến, chỉ thị tiền xủa lý, cấu trúc các câu lệnh trong chương trình, các hàm tạo sẵn cho người sử dụng… Ngoài ra về Tiếng Việt cũng có bản dịch của tác giả Trần Xuân Trường, SV K2001 DH BK HCM. Tài liệu này dịch trên cơ sở bản Help của CCS, tuy rằng chưa đầy đủ nhưng đây là một tài liệu hay, nếu bạn tìm hiểu về PIC và CCS thì nên tìm tài liệu này về đọc. Địa chỉ Download tài liệu: www.picvietnam.com -> Mục nói về CCS.
__________________
CallerID, Ethernet-RS232, PICWEB, Cảnh báo BTS Giải pháp toàn diện giám sát - điều khiển từ xa qua GSM/Internet 0988006696 http://linhnc308.blogspot.com linhnc308@gmail.com |
![]() |
![]() |
|
|
![]() |
||||
Ðề tài | Người gửi | Chuyên mục | Trả lời | Bài mới |
TUT về USART trong PIC16F877A | mafd_47a | MPASM | 16 | 19-02-2025 05:32 AM |
TUT ve I2C ( pic16f877a ) | mafd_47a | MPASM | 28 | 28-01-2025 10:45 PM |
Lập nhóm PIC16F877A | nhh | Cơ bản về vi điều khiển và PIC | 285 | 08-03-2017 11:08 PM |
Bộ so sánh và PWM cho PIC16F877A | anhquangngai | Cơ bản về vi điều khiển và PIC | 24 | 08-09-2012 09:00 AM |
Pic16f877a TỪ DỄ TỚi KhÓ | ntc | Cơ bản về vi điều khiển và PIC | 373 | 23-05-2009 10:24 PM |