![]() |
|
Tài trợ cho PIC Vietnam |
Cơ bản về vi điều khiển và PIC Những bài hướng dẫn cơ bản nhất để làm quen với vi điều khiển PIC |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
![]() Pic có bộ nhớ eeprom 8k (0-255).vậy để lưu dữ liệu dạng số có từ 2 chữ số trở lên thì phải làm như thế nào mọi người ơi?
lệnh lưu:write_eeprom(addr,value); lệnh đọc:read_eeprom(addr); //vậy thì cái value mình có phải định dạng như thế nào không? vd:lưu số 100 vào ô nhớ không thì viết như vậy đúng không: x=100; write_eeprom(0,x);// x phải là biến như thế nào mọi người? ai biết chỉ giúp mình với! |
![]() |
![]() |
![]() |
#2 | |
Trưởng lão PIC bang
|
Trích:
PIC 8-bit có dữ liệu dạng byte (8-bit), còn PIC24 thì có dữ liệu 16-bit. Với các PIC 8-bit, mỗi ô nhớ trong EEPROM dài 8-bit, trong CCS C thì có thể dùng kiểu char hay unsigned int8 để khai báo biế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 |
|
![]() |
![]() |
![]() |
#3 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
![]() Là dạng cơ số 10 anh ah!
mỗi ô nhớ dài 8 bit, vậy là mình chỉ lưu được từ 00 đến 99 thôi phải không anh Namqn? |
![]() |
![]() |
![]() |
#4 |
Trưởng lão PIC bang
|
1 byte có thể mã hóa giá trị từ 0 đến 255 thập phân (cơ số 10).
2 byte có thể mã hóa giá trị từ 0 đến 65535 thập phân. 4 byte có thể mã hóa giá trị từ 0 đến 4294967295 thập phân. Nếu lưu lại để tính toán thì nên lưu dạng nhị phân, nếu lưu lại để hiển thị thì nên chuyển sang dạng chuỗi ký tự. Kiểu nào cũng đều có thể lưu vào EEPROM, vì chúng đều chỉ là một chuỗi gồm một hay nhiều byte. 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 thay đổi nội dung bởi: namqn, 01-12-2008 lúc 11:21 PM. |
![]() |
![]() |
![]() |
#5 |
Đệ tử 6 túi
Tham gia ngày: Oct 2008
Nơi Cư Ngụ: HCM
Bài gửi: 137
: |
Đúng cái em cần rồi đây!
Vậy anh Namqn ơi nếu mình lưu con số >=256D vào eeromp thì sao anh (em đang dùng pic8).Em đoán như vậy là bị tràn phải không anh?(khi bị tràn thì ô nhớ đó sẽ chứa dữ liệu gì vậy anh?) Tại vì write_eeprom(addr,value); thì addr chỉ là 01 ô nhớ (dài 8 bit) không thể chứa được con số >=256D. Vậy với pic8 thì mình có cách nào để lưu số >=256D không anh? |
![]() |
![]() |
![]() |
#6 | |
Trưởng lão PIC bang
|
Trích:
Để lưu số nguyên 32-bit (4 byte) vào EEPROM, bạn có thể dùng hàm itoa() để chuyển nó thành một chuỗi ký tự, sau đó bạn có thể lưu từng ký tự này vào EEPROM. Để lấy lại giá trị số nguyên từ EEPROM, bạn có thể dùng hàm itoa(). Nếu chỉ cần hiển thị số nguyên đó thì có thể dùng thẳng chuỗi trong EEPROM. 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 |
|
![]() |
![]() |
![]() |
#7 | |
Đệ tử 1 túi
Tham gia ngày: Aug 2008
Bài gửi: 12
: |
Trích:
Với số 256D khi đổi ra nhị phân : 100000000 ( 9bit); vậy nghĩ là tràn ô nhớ eeprom( chỉ có 8 bit); vậy để lưu được những số lớn hơn 8 bit thì bạn nên tách số mà bạn muốn lưu thành những số 8 bit ... rồi lưu từng số 8 bit vào eeproom lưu vào eeprom ..rồi muốn lấy lại số đó thì chỉ cần đọc giá trỉ 2 byte đó rồi ghép chúng lại . pic 16( điển hình là 16f887 có 256byte eeprom ) vậy bạn có thể lưu được 256 byte rồi .. Trong CCS thì nó cung cấp cho ban các lệnh tạo số 8 bit , 16 bit , 32 bit . (make8(var,offset))..v...v.. cái này bạn vào trong help của ccs xem đi ... Còn nếu bạn muốn nhanh gọn thì chỉ cần dịch trái , dich phải để tách số 8 bit thôi , sau đó and nó lại là ok rồi..
__________________
Nhận thiết kế và thi công các sản phẩm tự động hóa, truyền thông, cơ khí , điện tử .. Nhận hàn board , quấn cuộn cảm .... thuyhu_letinh@yahoo.com 0909300332 . |
|
![]() |
![]() |
![]() |
|
|