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 04-11-2008, 11:47 PM   #1
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
lưu dữ liệu ở ROM....?

Để lưu dữ liệu ở rom dùng các hàm như sau:
write_eeprom(địa chỉ,giá trị);
read_eeprom(địa chỉ);
trong khi lưu và đọc cấm tất cả các ngắt
+ai có thể giải thích dùm cách khai báo địa chị trong lệnh trêm dùm tiểu đệ kô
+tiểu đệ lưu một mãng dữ liệu rất nhiều số sau đó đọc ra từ từ ai làm rồi xin chỉ giáo
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-11-2008, 12:23 AM   #2
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 nguyenquoctoan View Post
Để lưu dữ liệu ở rom dùng các hàm như sau:
write_eeprom(địa chỉ,giá trị);
read_eeprom(địa chỉ);
trong khi lưu và đọc cấm tất cả các ngắt
+ai có thể giải thích dùm cách khai báo địa chị trong lệnh trêm dùm tiểu đệ kô
+tiểu đệ lưu một mãng dữ liệu rất nhiều số sau đó đọc ra từ từ ai làm rồi xin chỉ giáo
Bạn đang nói về EEPROM của PIC/dsPIC. Dung lượng EEPROM của các chip có thể khác nhau, nhưng địa chỉ luôn bắt đầu bằng 0 khi sử dụng hai hàm trên. Nếu bạn khai báo các dữ liệu hằng trong tập tin nguồn thì phải tùy vào chip bạn đang dùng mới có thể biết được địa chỉ vùng nhớ EEPROM là bao nhiêu.

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 05-11-2008, 07:54 PM   #3
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
thưa bác namq em dùng pic 18f4550,lưu 10 số vào địa chỉ add1,10 số vào địa chỉ add2,10 số vào add3,dau đó đọc số 1 từ add1,ra tiếp số 2,...được truyền từ máy tính xuống,em chưa biết phải khai báo và viết như thế nào,
nhân tiện hỏi bác namq chương trìng test các post của píc 18f4550 của em như vậy ổn kô
#include <18f4550.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=20000000)
#byte porta=0xf80
#byte portb=0xf81
#byte portc=0xf82
#byte portd=0xf83
#byte porte=0xf84 ///khai bao dia chi port
void main(void)
{set_tris_a(0x00);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_e(0x00);
while (1)
{ porta=0;
delay_ms(250);
porta=255;
delay_ms(250);

portb=0;
delay_ms(250);
portb=255;
delay_ms(250);


portb=0;
delay_ms(250);
portb=255;
delay_ms(250);

portc=0x00;
delay_ms(250);
portc=0xff;
delay_ms(250);


portd=0x00;
delay_ms(250);
portd=0xff;
delay_ms(250);


porte=0x00;
delay_ms(250);
porte=0xff;
delay_ms(250);

}}
sao postc có một chân kô sáng đèn,pic mới mua kô thể chết được
nhờ bác xem dùm em
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-11-2008, 08:02 PM   #4
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 nguyenquoctoan View Post
thưa bác namq em dùng pic 18f4550,lưu 10 số vào địa chỉ add1,10 số vào địa chỉ add2,10 số vào add3,dau đó đọc số 1 từ add1,ra tiếp số 2,...được truyền từ máy tính xuống,em chưa biết phải khai báo và viết như thế nào,
nhân tiện hỏi bác namq chương trìng test các post của píc 18f4550 của em như vậy ổn kô
#include <18f4550.h>
#fuses NOWDT,PUT,HS,NOPROTECT
#use delay(clock=20000000)
#byte porta=0xf80
#byte portb=0xf81
#byte portc=0xf82
#byte portd=0xf83
#byte porte=0xf84 ///khai bao dia chi port
void main(void)
{set_tris_a(0x00);
set_tris_b(0x00);
set_tris_c(0x00);
set_tris_d(0x00);
set_tris_e(0x00);
while (1)
{ porta=0;
delay_ms(250);
porta=255;
delay_ms(250);

portb=0;
delay_ms(250);
portb=255;
delay_ms(250);


portb=0;
delay_ms(250);
portb=255;
delay_ms(250);

portc=0x00;
delay_ms(250);
portc=0xff;
delay_ms(250);


portd=0x00;
delay_ms(250);
portd=0xff;
delay_ms(250);


porte=0x00;
delay_ms(250);
porte=0xff;
delay_ms(250);

}}
sao postc có một chân kô sáng đèn,pic mới mua kô thể chết được
nhờ bác xem dùm em
Làm thế nào lưu 10 số vào một địa chỉ? Tôi không rõ ý của bạn. Nếu ô nhớ của bạn có độ dài 8-bit thì bạn chỉ có thể lưu 1 số 8-bit vào nó.

Bài viết có code kiểm tra port I/O của PIC18F4550 đã được tôi tách thành 1 luồng riêng, bạn xem danh sách các bài viết mới sẽ thấy bài viết của bạn (đã được tôi trả lời).

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 05-11-2008, 08:10 PM   #5
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
ý em là như vậy ta khai báo các địa chỉ như sau:
#define add1 0x06 // 30 byte
#define add2 0x25 // 34 byte
#define add3 0x49 // 80 byte
#define add4 0x9f // 100 byte
#define add5 0x9f //...?
trong add1 ta có 30byte,số 1 tâ lưu vào add1 nhưng ở byte1, sau đó tiếp số 2...(kô biết đúng kô),ý em muốn hỏi là sau khi lưu như vậy thì cách thức đọc ra như thế nào,
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 05-11-2008, 08:54 PM   #6
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 nguyenquoctoan View Post
ý em là như vậy ta khai báo các địa chỉ như sau:
#define add1 0x06 // 30 byte
#define add2 0x25 // 34 byte
#define add3 0x49 // 80 byte
#define add4 0x9f // 100 byte
#define add5 0x9f //...?
trong add1 ta có 30byte,số 1 tâ lưu vào add1 nhưng ở byte1, sau đó tiếp số 2...(kô biết đúng kô),ý em muốn hỏi là sau khi lưu như vậy thì cách thức đọc ra như thế nào,
Tài liệu hướng dẫn của CCS C đã có các ví dụ về cách sử dụng các hàm đọc/ghi EEPROM bên trong PIC rồi. CCS C cũng cung cấp một số ví dụ liên quan đến việc đọc/ghi EEPROM bên trong PIC, đề nghị bạn tìm đọc.

Với ví dụ của bạn, tôi có thể đọc dữ liệu như sau:
Code:
	for (i = add1; i <= (add1 + 30); i++) {
		bien = read_EEPROM(i);
		//Thực hiện công việc gì đó với bien
	}
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 05-11-2008, 09:05 PM   #7
nguyenquoctoan
Đệ tử 6 túi
 
Tham gia ngày: Nov 2007
Nơi Cư Ngụ: BK TP HCM
Bài gửi: 136
:
em cũng làm như thế nhưng chương trinh chạy ko ok,để xem lại cái đã,cảm ơn bác namq
nguyenquoctoan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-02-2009, 02:10 PM   #8
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Cho em hỏi nếu lưu một mảng char const a[10]="XINCHAO" trong EEPROM thì khi đọc từ EEPROM ra sẽ có dạng như thế nào ạ?
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 13-02-2009, 06:08 PM   #9
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 xuanhiendk2 View Post
Cho em hỏi nếu lưu một mảng char const a[10]="XINCHAO" trong EEPROM thì khi đọc từ EEPROM ra sẽ có dạng như thế nào ạ?
Khi đọc từ EEPROM ra sẽ có dạng như bạn đã ghi vào: a[0] = 'X', a[1] = 'I', ...

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 16-02-2009, 12:19 PM   #10
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Trích:
Nguyên văn bởi namqn View Post
Khi đọc từ EEPROM ra sẽ có dạng như bạn đã ghi vào: a[0] = 'X', a[1] = 'I', ...

Thân,
Như thế thì nó là dạng ASCII phải ko bác?
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 16-02-2009, 04:23 PM   #11
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 xuanhiendk2 View Post
Như thế thì nó là dạng ASCII phải ko bác?
Đúng vậy. Thực ra trình biên dịch chẳng quan tâm nó là dạng gì, chỉ lặp lại 8 bit dữ liệu mà bạn đã mô tả trong phần khai báo.

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 17-02-2009, 02:39 PM   #12
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Hiển thị tiếng anh trên Led matrix thì em làm được rồi. Em dùng bảng mã ASCII sẵn có. Giờ em muốn hiển thị tiếng Việt thì làm thế nào ạ? Các bác có thể nêu thuật toán giúp em được không? Lưu ý là tất cả các mã phải được lưu trong eeprom để tiện cho việc thay đổi. Ví dụ em đang hiển thị " I LOVE YOU" muốn thay thành " ANH YÊU EM" chẳng hạn em chỉ cần khai báo Char const a[]="ANH YEEU EM"
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 17-02-2009, 05:49 PM   #13
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 xuanhiendk2 View Post
Hiển thị tiếng anh trên Led matrix thì em làm được rồi. Em dùng bảng mã ASCII sẵn có. Giờ em muốn hiển thị tiếng Việt thì làm thế nào ạ? Các bác có thể nêu thuật toán giúp em được không? Lưu ý là tất cả các mã phải được lưu trong eeprom để tiện cho việc thay đổi. Ví dụ em đang hiển thị " I LOVE YOU" muốn thay thành " ANH YÊU EM" chẳng hạn em chỉ cần khai báo Char const a[]="ANH YEEU EM"
Bạn tự tạo bảng font tiếng Việt thôi, có thể dựa vào các font 1-byte trên máy tính để tạo bảng font cho LED ma trận. Sau đó bạn mã hóa thông điệp tương thích với bảng font mới của bạn.

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 18-02-2009, 10:35 AM   #14
xuanhiendk2
Đệ tử 3 túi
 
Tham gia ngày: Jan 2009
Bài gửi: 52
:
Thế nhưng ví dụ chữ A, B, C... thì đều có mã ASCII để nhận biết. Còn vi dụ chữ Â thì làm gì có mã ASCII để nhận biết hả anh. Ví dụ như chữ Â được mã hóa như thế nào trong MCU ạ? Ví dụ như em muốn hiển thị chữ Â ra LMD thì em phải xuất 5 byte mã hóa của chữ Â. Vậy làm sao đê biết đó là chữ Â được?
Các chữ đã được mã hóa ASCII thì đơn giản rồi. Ví dụ chữ A chẳng hạn em trỏ đến địa chỉ 32 trong eeprom và xuất liên tiếp 5 byte a[32].b[j]
xuanhiendk2 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 18-02-2009, 04:17 PM   #15
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 xuanhiendk2 View Post
Thế nhưng ví dụ chữ A, B, C... thì đều có mã ASCII để nhận biết. Còn vi dụ chữ Â thì làm gì có mã ASCII để nhận biết hả anh. Ví dụ như chữ Â được mã hóa như thế nào trong MCU ạ? Ví dụ như em muốn hiển thị chữ Â ra LMD thì em phải xuất 5 byte mã hóa của chữ Â. Vậy làm sao đê biết đó là chữ Â được?
Các chữ đã được mã hóa ASCII thì đơn giản rồi. Ví dụ chữ A chẳng hạn em trỏ đến địa chỉ 32 trong eeprom và xuất liên tiếp 5 byte a[32].b[j]
Bạn cho biết đoạn code mà bạn đã dùng để hiển thị tiếng Anh trên LED ma trận, tôi sẽ dựa vào đó mà giúp bạn ý tưởng (bạn chưa nắm được ý tưởng về việc tự tạo bảng font để dùng với LED ma trận).

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
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à 07:46 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