belesci
Newbie level 3
_delay
In PICC18 user manual it's writen _delay() inline function argument is unsigned long but if you check below 3 examples there is something wrong
exam 1 correct,
#include <pic18.h>
void main(void)
{
_delay(770);
}
code generated
143 003FF2 _main:
144 opt stack 31
145 ; BSR set to: ?
146 003FF2 FFFF dw 65535
147 003FF4 0E00 movlw 0
148 003FF6 u667:
149 003FF6 2EE8 decfsz wreg,f,c
150 003FF8 D7FE goto u667
151 003FFA D000 nop2 ;nop
154 003FFC EF00 F000 goto start
/******************************************************/
exam 2 wrong,
#include <pic18.h>
void main(void)
{
_delay(771);
}
code generated
143 003FF4 _main:
144 opt stack 31
145 ; BSR set to: ?
146 003FF4 FFFF dw 65535
147 003FF6 0E01 movlw 1
148 003FF8 u667:
149 003FF8 2EE8 decfsz wreg,f,c
150 003FFA D7FE goto u667
152 ; BSR set to: ?
153 003FFC EF00 F000 goto start
/*******************************************************/
exam 3 wrong,
#include <pic18.h>
void main(void)
{
_delay(5771);
}
code generated
143 003FEC _main:
144 opt stack 31
145 ; BSR set to: ?
146 003FEC FFFF dw 65535
147 003FEE 0100 movlb 0 ; () banked
148 003FF0 51FF movf ??_main& (0+255),w,b
149 003FF2 0E7C movlw 124
150 003FF4 u667:
151 003FF4 2EE8 decfsz wreg,f,c
152 003FF6 D7FE goto u667
153 003FF8 2FFF decfsz ??_main& (0+255),f,b
154 003FFA D7FC goto u667
156 ; BSR set to: ?
157 003FFC EF00 F000 goto start
What is wrong ? Is it bug or something missed ?
Thanks for interesting.
In PICC18 user manual it's writen _delay() inline function argument is unsigned long but if you check below 3 examples there is something wrong
exam 1 correct,
#include <pic18.h>
void main(void)
{
_delay(770);
}
code generated
143 003FF2 _main:
144 opt stack 31
145 ; BSR set to: ?
146 003FF2 FFFF dw 65535
147 003FF4 0E00 movlw 0
148 003FF6 u667:
149 003FF6 2EE8 decfsz wreg,f,c
150 003FF8 D7FE goto u667
151 003FFA D000 nop2 ;nop
154 003FFC EF00 F000 goto start
/******************************************************/
exam 2 wrong,
#include <pic18.h>
void main(void)
{
_delay(771);
}
code generated
143 003FF4 _main:
144 opt stack 31
145 ; BSR set to: ?
146 003FF4 FFFF dw 65535
147 003FF6 0E01 movlw 1
148 003FF8 u667:
149 003FF8 2EE8 decfsz wreg,f,c
150 003FFA D7FE goto u667
152 ; BSR set to: ?
153 003FFC EF00 F000 goto start
/*******************************************************/
exam 3 wrong,
#include <pic18.h>
void main(void)
{
_delay(5771);
}
code generated
143 003FEC _main:
144 opt stack 31
145 ; BSR set to: ?
146 003FEC FFFF dw 65535
147 003FEE 0100 movlb 0 ; () banked
148 003FF0 51FF movf ??_main& (0+255),w,b
149 003FF2 0E7C movlw 124
150 003FF4 u667:
151 003FF4 2EE8 decfsz wreg,f,c
152 003FF6 D7FE goto u667
153 003FF8 2FFF decfsz ??_main& (0+255),f,b
154 003FFA D7FC goto u667
156 ; BSR set to: ?
157 003FFC EF00 F000 goto start
What is wrong ? Is it bug or something missed ?
Thanks for interesting.