PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và 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

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

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 23-11-2009, 06:37 PM   #1
hahahaa3pro
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 3
:
Khai báo biến với res và equ

Cho mình hỏi chỗ khai báo biến trong ASM. Chương trình mình viết sử dụng ngắt timer. Khi nào có ngắt thì tăng PORTB lên 1
Sau đây là 2 cách khai báo biến
;(1)
org 0x20
delay res 1
i res 1
********************
;(2)
delay equ 20h
i equ 21h
********************
; trong ham ngat
incf i
movff i, PORTB
*******************
Khi mình khai báo biến theo cách 1 thì PORTB ko tăng
Khi khai báo biến theo cách 2 thì chương trình chạy đúng ( PORTB tăng)
Mình thắc mắc ko thể hiểu được là tại sao khai báo biến theo cách 1 thì chương trình lại chạy sai?
Thêm mỗi chỗ nữa là khi mình khai báo mảng " buffer res 8" thì lại ko build được.
Hiện mình đang dùng MPLAB IDE 8v36
Ai bít thì chỉ giúp mình nhe
Thanks các bạn nhìu
hahahaa3pro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2009, 06:58 PM   #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 hahahaa3pro View Post
Cho mình hỏi chỗ khai báo biến trong ASM. Chương trình mình viết sử dụng ngắt timer. Khi nào có ngắt thì tăng PORTB lên 1
Sau đây là 2 cách khai báo biến
;(1)
org 0x20
delay res 1
i res 1
********************
;(2)
delay equ 20h
i equ 21h
********************
; trong ham ngat
incf i
movff i, PORTB
*******************
Khi mình khai báo biến theo cách 1 thì PORTB ko tăng
Khi khai báo biến theo cách 2 thì chương trình chạy đúng ( PORTB tăng)
Mình thắc mắc ko thể hiểu được là tại sao khai báo biến theo cách 1 thì chương trình lại chạy sai?
Thêm mỗi chỗ nữa là khi mình khai báo mảng " buffer res 8" thì lại ko build được.
Hiện mình đang dùng MPLAB IDE 8v36
Ai bít thì chỉ giúp mình nhe
Thanks các bạn nhìu
Với cách 1, viết đúng quy tắc phải là như sau:
Code:
	udata
	delay	res	1
	i	res	1
Bạn hãy đọc tài liệu hướng dẫn của MPASM, phần dành cho hai directive equ và res để hiểu rõ sự khác biệt.

Bạn chưa cho biết bạn đang biên dịch chỉ một tập tin .asm hay là biên dịch một project có liên kết (linked).

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 23-11-2009, 09:16 PM   #3
hahahaa3pro
Nhập môn đệ tử
 
Tham gia ngày: Apr 2009
Bài gửi: 3
:
Theo mình hiểu thì khai báo kiểu res như vd trên thì delay có địa chỉ là 0x20, tiếp theo i có địa chỉ là 0x21 ... Nhưng ko hiểu tại sao như vậy lại sai
Mình biên dịch 1 project có link. Khi biên dịch thì nó ko báo error nhưng hình như build ko đc là do link j đó
"Error - section '.org_2' can not fit the absolute section. Section '.org_2' start=0x00000018, length=0x00000256
Errors : 1

Link step failed."
Đây là lỗi khi mà mình khai bảo mảng "buffer res 8"
Mong bạn hướng dẫn
Thanks nhìu
hahahaa3pro vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 23-11-2009, 10:07 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 hahahaa3pro View Post
Theo mình hiểu thì khai báo kiểu res như vd trên thì delay có địa chỉ là 0x20, tiếp theo i có địa chỉ là 0x21 ... Nhưng ko hiểu tại sao như vậy lại sai
Mình biên dịch 1 project có link. Khi biên dịch thì nó ko báo error nhưng hình như build ko đc là do link j đó
"Error - section '.org_2' can not fit the absolute section. Section '.org_2' start=0x00000018, length=0x00000256
Errors : 1

Link step failed."
Đây là lỗi khi mà mình khai bảo mảng "buffer res 8"
Mong bạn hướng dẫn
Thanks nhìu
Bạn đọc lại đề nghị của tôi: "Bạn hãy đọc tài liệu hướng dẫn của MPASM, phần dành cho hai directive equ và res để hiểu rõ sự khác biệt."

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à 10:36 AM.


Đượ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