|
Tài trợ cho PIC Vietnam |
MPASM Lập trình bằng hợp ngữ là một việc làm vô cùng vất vả, tuy nhiên, để hiểu và làm việc với vi điều khiển, hợp ngữ trở thành một công cụ khá đắc lực ... |
|
Ðiều Chỉnh | Xếp Bài |
|
21-07-2007, 10:15 PM | #1 |
Đệ tử 5 túi
|
nó báo lỗi thế này khi dịch
MPLINK 4.04, Linker
Copyright (c) 2006 Microchip Technology Inc. Error - Absolute code section '.org_2' must start at a word-aligned address. Errors : 1 BUILD FAILED: Sat Jul 21 21:08:03 2007 file ASM thì ko báo lỗi gì ,nhưng khi link thì lỗi như vậy ,mấy anh chỉ giùm ,đang thử sài MPASM .
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
21-07-2007, 10:31 PM | #2 | |
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 |
|
22-07-2007, 11:46 AM | #3 |
Đệ tử 5 túi
|
code hơi dài copy của ng khác để thử
Code:
;******************************************************** ; ; The LED flash control processing ; ; Author : Seiichi Inoue ;******************************************************** list p=pic18f4550 include p18f4550.inc errorlevel -302 ;Eliminate bank warning ;**************** Label Definition ******************** ra0 equ 00 ;RA0 bit ra1 equ 01 ;RA1 bit ra2 equ 02 ;RA2 bit ra3 equ 03 ;RA3 bit ra4 equ 04 ;RA4 bit cnt500u equ 0c ;500usec counter Address cnt1m equ 0d ;1msec counter Address cnt100m equ 0e ;100msec counter Address cnt500m equ 0f ;500msec counter Address cnt1s equ 10 ;1sec counter Address ;************* Pattern Data Definition **************** ; '1':OFF '0':ON ;****** Pattern 0 ****** p00 equ b'11111110' p01 equ b'11111101' p02 equ b'11111011' p03 equ b'11110111' p04 equ b'11101111' p05 equ b'11011111' p06 equ b'10111111' p07 equ b'01111111' ;****** Pattern 1 ****** p10 equ b'01111111' p11 equ b'10111111' p12 equ b'11011111' p13 equ b'11101111' p14 equ b'11110111' p15 equ b'11111011' p16 equ b'11111101' p17 equ b'11111110' ;****** Pattern 2 ****** p20 equ b'01111110' p21 equ b'10111101' p22 equ b'11011011' p23 equ b'11100111' p24 equ b'11011011' p25 equ b'10111101' p26 equ b'01111110' ;****** Pattern 3 ****** p30 equ b'11111110' p31 equ b'11111101' p32 equ b'11111010' p33 equ b'11110101' p34 equ b'11101010' p35 equ b'11010101' p36 equ b'10101010' p37 equ b'01010101' p38 equ b'10101011' p39 equ b'01010111' p3a equ b'10101111' p3b equ b'01011111' p3c equ b'10111111' p3d equ b'01111111' ;****** Pattern 4 ****** p40 equ b'00000000' p41 equ b'11111111' p42 equ b'00000000' p43 equ b'11111111' p44 equ b'00000000' p45 equ b'11111111' p46 equ b'00000000' p47 equ b'11111111' p48 equ b'00000000' ;**************** Program Start *********************** org 0 ;Reset Vector goto init org 4 ;Interrupt Vector goto init ;**************** Initial Process ********************* org 5 init bsf status,RP0 ;Change to Bank1 movlw h'ff' ;Set input mode data movwf trisa ;Set PORTA to Input mode clrf trisb ;Set PORTB to Output mode bcf status,RP0 ;Change to Bank0 movlw h'ff' ;Set LED off data movwf portb ;Output data ;**************** Key Scan Process ******************** keyscan btfss porta,ra0 ;RA0 ON(Low lebel) ? call ptn0 ;Yes. Call Pattern 0 btfss porta,ra1 ;RA1 ON ? call ptn1 ;Yes. Call Pattern 1 btfss porta,ra2 ;RA2 ON ? call ptn2 ;Yes. Call Pattern 2 btfss porta,ra3 ;RA3 ON ? call ptn3 ;Yes. Call Pattern 3 btfss porta,ra4 ;RA4 ON ? call ptn4 ;Yes. Call Pattern 4 goto keyscan ;Retry ;*********** Pattern 0 Output Subroutine *************** ptn0 movlw p00 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p01 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p02 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p03 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p04 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p05 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p06 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p07 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw h'ff' ;Set LED off data movwf portb ;Output data call t100m ;Wait 100msec return ;*********** Pattern 1 Output Subroutine *************** ptn1 movlw p10 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p11 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p12 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p13 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p14 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p15 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p16 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p17 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw h'ff' ;Set LED off data movwf portb ;Output data call t100m ;Wait 100msec return ;*********** Pattern 2 Output Subroutine *************** ptn2 movlw p20 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p21 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p22 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p23 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p24 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p25 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p26 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw h'ff' ;Set LED off data movwf portb ;Output data call t100m ;Wait 100msec return ;*********** Pattern 3 Output Subroutine *************** ptn3 movlw p30 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p31 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p32 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p33 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p34 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p35 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p36 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p37 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p38 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p39 ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p3a ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p3b ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p3c ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw p3d ;Set pattern data movwf portb ;Output data call t100m ;Wait 100msec movlw h'ff' ;Set LED off data movwf portb ;Output data call t100m ;Wait 100msec return ;*********** Pattern 4 Output Subroutine *************** ptn4 movlw p40 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p41 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p42 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p43 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p44 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p45 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p46 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p47 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw p48 ;Set pattern data movwf portb ;Output data call t1s ;Wait 1sec movlw h'ff' ;Set LED off data movwf portb ;Output data call t1s ;Wait 1sec return ;******************************************************** ; Timer Subroutine for 10MHz clock ;******************************************************** ;************* 1msec Timer Subroutine ***************** t1m movlw d'2' ;(1) Set loop cnt1 movwf cnt1m ;(1) Save loop cnt1 tm1lp1 movlw d'249' ;(1)*2 Set loop cnt2 movwf cnt500u ;(1)*2 Save loop cnt2 tm1lp2 nop ;(1)*249*2 Time adjust nop ;(1)*249*2 Time adjust decfsz cnt500u,f ;(1)*249*2 cnt500u-1=0 ? goto tm1lp2 ;(2)*248*2 No, continue decfsz cnt1m,f ;(1)*2 cnt1m-1=0 ? goto tm1lp1 ;(2) No. Continue return ;(2) Yes. Cnt end ;Total 2501*0.4usec=1msec ;************* 100msec Timer Subroutine *************** t100m movlw d'100' ;Set loop counter movwf cnt100m ;Save loop counter tm2lp call t1m ;1msec subroutine decfsz cnt100m,f ;cnt100m - 1 = 0 ? goto tm2lp ;No. Continue return ;Yes. Count end ;************* 500msec Timer Subroutine *************** t500m movlw d'5' ;Set loop counter movwf cnt500m ;Save loop counter tm3lp call t100m ;100msec subroutine decfsz cnt500m,f ;cnt500m - 1 = 0 ? goto tm3lp ;No. Continue return ;Yes. Count end ;************** 1sec Timer Subroutine ***************** t1s movlw d'2' ;Set loop counter movwf cnt1s ;Save loop counter tm4lp call t500m ;500msec subroutine decfsz cnt1s,f ;cnt1s - 1 = 0 ? goto tm4lp ;No. Continue return ;Yes. Count end ;******************************************************** ; END of LED flash control processing ;******************************************************** end project gồm 3 file (đã add vô) : led.asm (file trên) ,p18f4550.inc ,18f4550.lkr khi dịch thì output như sau : Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F4550 "led.asm" /l"led.lst" /e"led.err" /o"led.o" /c- Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Documents and Settings\miti\Desktop\pic\18F4550.lkr" "C:\Documents and Settings\miti\Desktop\pic\led.o" /o"test2.cof" /M"test2.map" MPLINK 4.04, Linker Copyright (c) 2006 Microchip Technology Inc. Error - Absolute code section '.org_2' must start at a word-aligned address. Errors : 1 BUILD FAILED: Sun Jul 22 11:43:42 2007 còn quá trình assembly thì ko có lỗi nào. Anh chỉ giùm
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
22-07-2007, 05:08 PM | #4 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Code:
org 0 ;Reset Vector goto init org 4 ;Interrupt Vector goto init ;**************** Initial Process ********************* org 5 |
23-07-2007, 10:48 AM | #5 | |
Đệ tử 5 túi
|
Trích:
Executing: "C:\Program Files\Microchip\MPASM Suite\MPAsmWin.exe" /q /p18F4550 "led.asm" /l"led.lst" /e"led.err" /o"led.o" /c- Executing: "C:\Program Files\Microchip\MPASM Suite\MPLink.exe" "C:\Documents and Settings\Minh Tien\Desktop\pic\18F4550.lkr" "C:\Documents and Settings\Minh Tien\Desktop\pic\led.o" /o"test2.cof" /M"test2.map" MPLINK 4.04, Linker Copyright (c) 2006 Microchip Technology Inc. Error - section '.org_1' can not fit the absolute section. Section '.org_1' start=0x00000004, length=0x00000220 Errors : 1 BUILD FAILED: Mon Jul 23 09:41:31 2007 hay anh nào ra tay post giùm em project bất kỳ của 18f ,miễn là dịch ko lỗi để em còn biết dg mò
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
|
23-07-2007, 01:40 PM | #6 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Mình đoán bạn copy code của 16F đổi sang 18F, tổ chức bộ nhớ chương trình hai dòng này khác nhau. Với 16F vector 0x04 là vector ngắt, còn 2 vector ngắt của 18F ở 0x08 và 0x18, do đó code thường bắt đầu ở 0x2a.
Bạn thử đoạn code này xem sao. Code:
; Include file, change directory if needed include "p18f4550.inc" config FOSC=HSPLL_HS, PLLDIV=5, CPUDIV=OSC1_PLL2, WDT=OFF, PWRT=ON, LVP=OFF, MCLRE=ON, PBADEN=OFF c1 equ 0x01 c2 equ 0x02 ; Start at the reset vector Reset_Vector code 0x000 goto Start ; Start application beyond vector area code 0x002A Start clrf TRISB, a loop movlw 0xff movwf LATB, a call delay clrf LATB, a call delay bra loop delay movlw 0xff movwf c1, a loop1 movlw 0xff movwf c2, a loop2 decfsz c2 bra loop2 decfsz c1 bra loop1 return end thay đổi nội dung bởi: bien_van_khat, 23-07-2007 lúc 02:38 PM. |
23-07-2007, 11:09 PM | #7 |
Đệ tử 5 túi
|
có lẽ anh nói đúng ,hồi trưa ,em đã thử dời đoạn Main sang vị trí mới ,ở 100h thì nó ko có lỗi gì ,ra luôn file HEX
và cái vụ config nó , hình như trc giờ chưa / ít ai trong PIC VN nói về nó ( chỉ nói về 16f ) ,và tập lệnh nữa ,hinh như coi trọng 16f ,bỏ quên 18f ko hiểu sao ,có khi nó đang chạy thì nó dừng ,(em đã tắt WDT )
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
26-07-2007, 01:14 AM | #8 | |
Đệ tử 5 túi
|
Trích:
nếu trong đoạn chương trình trên có xài ngắt ,mà ISR lại rất dài ,thì ta viết như thế nào ,có phải thế này ko : ORG 0 goto main ORG 0x18 goto ISR ORG 0x2a ISR ....... ...... retfie main ..... ..... đúng ko anh ? chỗ này quan trọng vì ko qua nó thì cũng ko có file HEX chắci ai cũng gặp thế này khi sài 18f
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
|
26-07-2007, 01:21 AM | #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 |
|
27-07-2007, 12:21 AM | #10 |
Đệ tử 5 túi
|
unbanked RAM (0x70-0x7F) là của 16f ,khai báo như sau
unbanked udata_shr W_s res 1 Temp res 1 anh chỉ cho : khi sửa lại cho 18f thì mình sửa thế nào
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
27-07-2007, 03:04 AM | #11 | |
Trưởng lão PIC bang
|
Trích:
Code:
udata_acs Var1 res 1 Double res 2
__________________
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 |
|
23-07-2007, 11:19 PM | #12 |
Đệ tử 5 túi
|
nó báo lỗi những dòng lệnh :
movwf LATB, a những dòng kết thúc bằng chữ "a" nó nói a chưa dc định nghĩa ,nhưng cái này đúng cú pháp mà
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
24-07-2007, 01:14 AM | #13 | |
Trưởng lão PIC bang
|
Trích:
Về chuyện cấu hình, PIC18F có khá nhiều từ cấu hình, và các cấu hình cũng thay đổi khá nhiều theo họ chip. Thậm chí các cụm bit cùng một ý nghĩa nhưng có nhiều họ đặt tên khác nhau. Do đó, dùng chip nào thì xem chip đó. Vì lý do các cấu hình cho PIC18 phức tạp mà Microchip đã viết hẳn ra 1 tập tin hướng dẫn cấu hình đi kèm C18 (trong thư mục con 'doc' của thư mục cài đặt C18) và một tập tin khác ở dạng pdf là 'PIC18 Configuration Setting Addendum' (DS51537) có thể download từ trang web của Microchip. Tập lệnh của PIC18 có thể tham khảo như một phần của tài liệu 'PIC18C Family Reference Manual' (DS39500), có thể download từ trang web của Microchip. 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, 24-07-2007 lúc 01:20 AM. |
|
24-07-2007, 11:21 AM | #14 |
Đệ tử 5 túi
|
xóa chữ a đi thì chương trình chạy bt ,chắc nó coi như 16f
cấu hình ,em vô menu chỉnh trực tiếp luôn ,cũng OK Tập lệnh có trong datasheet ,em mới vừa tìm dc Cảm ơn anh Sẵn cho em hỏi luôn ,nếu mã viết cho 16f mà sài cho 18f thì cần lưu ý / sửa những chỗ nào Em có 1 file ASM <của Microchip >mà nó ko có mậy cái vụ org gì hết ,vậy thì khi dịch và nạp thì sao ,nó cũng xài ngắt
__________________
Mạch - remote điều khiển từ xa qua RF 30m ,300m ,500m,1000m,... (đã test ) ,loại công suất lớn , loại cực nhỏ .... , rẻ ,giao hàng nhanh chóng toàn quốc (3 ngày), thâm niên 3 năm mua bán mạch RF 09 8485.bảy bảy.11 bán linh kiện ,MCU ARM , kit , dụng cụ , mạch www.nhattaoonline.com Hỗ trợ kỹ thuật đầy đủ. Tài liệu đầy đủ. |
15-11-2007, 02:39 PM | #15 |
Nhập môn đệ tử
Tham gia ngày: Nov 2007
Bài gửi: 2
: |
Em là dân mới nên không biết cách gởi bài lên diễn đàn, nên hỏi trong đây mong các Anh thông cảm.
E sử dụng MPASM, khi dich chuong trình nó không chuyển bank. ;test chuyen bank list p=16f877A #include <p16f877A.inc> ORG 0X0 GOTO MAIN ORG 0X5 MAIN CLRF STATUS BSF STATUS,RP0 ;BANKSEL TRISB CLRF TRISB END đáng lẽ khi CLRF TRISB thì nó phải CLRF 0x86 ở bank1 nhưng nó lại LCRF 0x6 ở bank0: 0007 0186 CLRF 0x6 15: CLRF TRISB mong các Anh chi dum. phai khai bao lam sao khi dich bằng Microchip MPASM toolsuite để cho nó chuyển đúng bank. Message[302] E:\PIC\TESTBANK.ASM 15 : Register in operand not in bank 0. Ensure that bank bits are correct |
|
|