PICC18

Attila Sass attila.sass at palettainvent.hu
Thu Aug 11 14:16:30 CEST 2005


Szia!

Nem lehet, hogy valahol máshol van a gond? Persze nálam is csinált már
marhaságokat a fordító (főleg ha van optimalizáció), olyan is volt, hogy
attól, mert egy teljesen másik helyen betettem egy asm("nop")-ot,
megjavult. 

Nem tudom mi van nálad, de nálam az alábbi "dummy" programot:
--------
#include <pic18fxx2.h>
void main(void)
{
	while (1);
}
int l;
void low_priority interrupt handler()
{
	int j,k,l,m,n,o,p;
	j = 32;
	k = 12;
	m = 21;
	n = 43;
	o = 454;
	p = o*5 +m;
	l = k+j-m*o%p;
}

void interrupt hhandler()
{
	int j,k,l,m,n,o,p;
	j = 321;
	k = 123;
	m = 213;
	n = 436;
	o = 4524;
	p = o*5 +m;
	l = k+j+m%o*p;
}
--------
Úgy néz ki rendben lefordítja (8.20pl4):

 Line  Address  Opcode    Label                  Disassembly


     1   0000  EF12                GOTO 0x24

     2   0002  F000                NOP

     3   0004  FFFF                NOP

     4   0006  FFFF                NOP

     5   0008  CFD8                MOVFF STATUS, 0x5ff

     6   000A  F5FF                NOP

     7   000C  CFE0                MOVFF BSR, saved_bsrh

     8   000E  F008                NOP

     9   0010  EFF5                GOTO 0x1ea

    10   0012  F000                NOP

    11   0014  FFFF                NOP

    12   0016  FFFF                NOP

    13   0018  CFD8                MOVFF STATUS, 0x5f3

    14   001A  F5F3                NOP

    15   001C  CFE0                MOVFF BSR, saved_bsrl

    16   001E  F009                NOP

    17   0020  EF82                GOTO 0x104

    18   0022  F000                NOP

    19   0024  EE00                LFSR 0, 0xe2

    20   0026  F0E2                NOP

    21   0028  EE11                LFSR 0x1, 0x100

    22   002A  F000                NOP

    23   002C  EC68                CALL 0x2d0, 0

    24   002E  F001                NOP

    25   0030  EF1A                GOTO main

    26   0032  F000                NOP

    27   0034  FFFF   main         NOP

    28   0036  D004                BRA 0x40

    29   0038  D000                BRA 0x3a

    30   003A  D7FF                BRA 0x3a

    31   003C  EF12                GOTO 0x24

    32   003E  F000                NOP

    33   0040  D7FB                BRA 0x38

    34   0042  FFFF   handler      NOP

    35   0044  D05E                BRA 0x102

    36   0046  0E20                MOVLW 0x20

    37   0048  0100                MOVLB 0

    38   004A  6FF2                MOVWF j, BANKED

    39   004C  6BF3                CLRF 0xf3, BANKED

    40   004E  0E0C                MOVLW 0xc

    41   0050  6FF4                MOVWF k, BANKED

    42   0052  6BF5                CLRF 0xf5, BANKED

    43   0054  0E15                MOVLW 0x15

    44   0056  6FF8                MOVWF m, BANKED

    45   0058  6BF9                CLRF 0xf9, BANKED

    46   005A  0E2B                MOVLW 0x2b

    47   005C  6FFA                MOVWF n, BANKED

    48   005E  6BFB                CLRF 0xfb, BANKED

    49   0060  0EC6                MOVLW 0xc6

    50   0062  6FFC                MOVWF o, BANKED

    51   0064  0E01                MOVLW 0x1

    52   0066  6FFD                MOVWF 0xfd, BANKED

    53   0068  0E05                MOVLW 0x5

    54   006A  6E02                MOVWF 0x2, ACCESS

    55   006C  6A03                CLRF 0x3, ACCESS

    56   006E  C0FC                MOVFF o, powerup

    57   0070  F000                NOP

    58   0072  C0FD                MOVFF 0xfd, used_btemp4

    59   0074  F001                NOP

    60   0076  EC58                CALL 0x2b0, 0

    61   0078  F001                NOP

    62   007A  51F8                MOVF m, W, BANKED

    63   007C  2404                ADDWF intlevel0, W, ACCESS

    64   007E  6FFE                MOVWF p, BANKED

    65   0080  51F9                MOVF 0xf9, W, BANKED

    66   0082  2005                ADDWFC 0x5, W, ACCESS

    67   0084  6FFF                MOVWF 0xff, BANKED

    68   0086  C0FC                MOVFF o, 0x2

    69   0088  F002                NOP

    70   008A  C0FD                MOVFF 0xfd, 0x3

    71   008C  F003                NOP

    72   008E  C0F8                MOVFF m, powerup

    73   0090  F000                NOP

    74   0092  C0F9                MOVFF 0xf9, used_btemp4

    75   0094  F001                NOP

    76   0096  EC58                CALL 0x2b0, 0

    77   0098  F001                NOP

    78   009A  C004                MOVFF intlevel0, powerup

    79   009C  F000                NOP

    80   009E  C005                MOVFF 0x5, used_btemp4

    81   00A0  F001                NOP

    82   00A2  C0FE                MOVFF p, 0x2

    83   00A4  F002                NOP

    84   00A6  C0FF                MOVFF 0xff, 0x3

    85   00A8  F003                NOP

    86   00AA  EC42                CALL 0x284, 0

    87   00AC  F001                NOP

    88   00AE  C0F4                MOVFF k, 0x2

    89   00B0  F002                NOP

    90   00B2  C0F5                MOVFF 0xf5, 0x3

    91   00B4  F003                NOP

    92   00B6  51F2                MOVF j, W, BANKED

    93   00B8  2602                ADDWF 0x2, F, ACCESS

    94   00BA  51F3                MOVF 0xf3, W, BANKED

    95   00BC  2203                ADDWFC 0x3, F, ACCESS

    96   00BE  5000                MOVF powerup, W, ACCESS

    97   00C0  5C02                SUBWF 0x2, W, ACCESS

    98   00C2  6FF6                MOVWF l, BANKED

    99   00C4  5001                MOVF used_btemp4, W, ACCESS

   100   00C6  5803                SUBWFB 0x3, W, ACCESS

   101   00C8  6FF7                MOVWF 0xf7, BANKED

   102   00CA  C5E8                MOVFF 0x5e8, PRODL

   103   00CC  FFF3                NOP

   104   00CE  C5E9                MOVFF 0x5e9, PRODH

   105   00D0  FFF4                NOP

   106   00D2  C5EA                MOVFF 0x5ea, powerup

   107   00D4  F000                NOP

   108   00D6  C5EB                MOVFF 0x5eb, used_btemp4

   109   00D8  F001                NOP

   110   00DA  C5EC                MOVFF 0x5ec, 0x2

   111   00DC  F002                NOP

   112   00DE  C5ED                MOVFF 0x5ed, 0x3

   113   00E0  F003                NOP

   114   00E2  C5EE                MOVFF 0x5ee, intlevel0

   115   00E4  F004                NOP

   116   00E6  C5EF                MOVFF 0x5ef, 0x5

   117   00E8  F005                NOP

   118   00EA  C5F0                MOVFF 0x5f0, 0x6

   119   00EC  F006                NOP

   120   00EE  C5F1                MOVFF 0x5f1, 0x7

   121   00F0  F007                NOP

   122   00F2  C5F2                MOVFF 0x5f2, WREG

   123   00F4  FFE8                NOP

   124   00F6  C009                MOVFF saved_bsrl, BSR

   125   00F8  FFE0                NOP

   126   00FA  C5F3                MOVFF 0x5f3, STATUS

   127   00FC  FFD8                NOP

   128   00FE  0010                RETFIE 0

   129   0100  FFFF                NOP

   130   0102  D7A1                BRA 0x46

   131   0104  FFFF                NOP

   132   0106  CFE8                MOVFF WREG, 0x5f2

   133   0108  F5F2                NOP

   134   010A  C007                MOVFF 0x7, 0x5f1

   135   010C  F5F1                NOP

   136   010E  C006                MOVFF 0x6, 0x5f0

   137   0110  F5F0                NOP

   138   0112  C005                MOVFF 0x5, 0x5ef

   139   0114  F5EF                NOP

   140   0116  C004                MOVFF intlevel0, 0x5ee

   141   0118  F5EE                NOP

   142   011A  C003                MOVFF 0x3, 0x5ed

   143   011C  F5ED                NOP

   144   011E  C002                MOVFF 0x2, 0x5ec

   145   0120  F5EC                NOP

   146   0122  C001                MOVFF used_btemp4, 0x5eb

   147   0124  F5EB                NOP

   148   0126  C000                MOVFF powerup, 0x5ea

   149   0128  F5EA                NOP

   150   012A  CFF4                MOVFF PRODH, 0x5e9

   151   012C  F5E9                NOP

   152   012E  CFF3                MOVFF PRODL, 0x5e8

   153   0130  F5E8                NOP

   154   0132  D787                BRA handler

   155   0134  FFFF   hhandler     NOP

   156   0136  D058                BRA 0x1e8

   157   0138  0100                MOVLB 0

   158   013A  0E41                MOVLW 0x41

   159   013C  6FE4                MOVWF j, BANKED

   160   013E  0E01                MOVLW 0x1

   161   0140  6FE5                MOVWF 0xe5, BANKED

   162   0142  0E7B                MOVLW 0x7b

   163   0144  6FE6                MOVWF k, BANKED

   164   0146  6BE7                CLRF 0xe7, BANKED

   165   0148  0ED5                MOVLW 0xd5

   166   014A  6FEA                MOVWF m, BANKED

   167   014C  6BEB                CLRF 0xeb, BANKED

   168   014E  0EB4                MOVLW 0xb4

   169   0150  6FEC                MOVWF n, BANKED

   170   0152  0E01                MOVLW 0x1

   171   0154  6FED                MOVWF 0xed, BANKED

   172   0156  0EAC                MOVLW 0xac

   173   0158  6FEE                MOVWF o, BANKED

   174   015A  0E11                MOVLW 0x11

   175   015C  6FEF                MOVWF 0xef, BANKED

   176   015E  0E05                MOVLW 0x5

   177   0160  6E02                MOVWF 0x2, ACCESS

   178   0162  6A03                CLRF 0x3, ACCESS

   179   0164  C0EE                MOVFF o, powerup

   180   0166  F000                NOP

   181   0168  C0EF                MOVFF 0xef, used_btemp4

   182   016A  F001                NOP

   183   016C  EC58                CALL 0x2b0, 0

   184   016E  F001                NOP

   185   0170  51EA                MOVF m, W, BANKED

   186   0172  2404                ADDWF intlevel0, W, ACCESS

   187   0174  6FF0                MOVWF p, BANKED

   188   0176  51EB                MOVF 0xeb, W, BANKED

   189   0178  2005                ADDWFC 0x5, W, ACCESS

   190   017A  6FF1                MOVWF 0xf1, BANKED

   191   017C  C0EE                MOVFF o, 0x2

   192   017E  F002                NOP

   193   0180  C0EF                MOVFF 0xef, 0x3

   194   0182  F003                NOP

   195   0184  C0EA                MOVFF m, powerup

   196   0186  F000                NOP

   197   0188  C0EB                MOVFF 0xeb, used_btemp4

   198   018A  F001                NOP

   199   018C  EC42                CALL 0x284, 0

   200   018E  F001                NOP

   201   0190  C0F0                MOVFF p, 0x2

   202   0192  F002                NOP

   203   0194  C0F1                MOVFF 0xf1, 0x3

   204   0196  F003                NOP

   205   0198  EC58                CALL 0x2b0, 0

   206   019A  F001                NOP

   207   019C  51E6                MOVF k, W, BANKED

   208   019E  2604                ADDWF intlevel0, F, ACCESS

   209   01A0  51E7                MOVF 0xe7, W, BANKED

   210   01A2  2205                ADDWFC 0x5, F, ACCESS

   211   01A4  51E4                MOVF j, W, BANKED

   212   01A6  2404                ADDWF intlevel0, W, ACCESS

   213   01A8  6FE8                MOVWF l, BANKED

   214   01AA  51E5                MOVF 0xe5, W, BANKED

   215   01AC  2005                ADDWFC 0x5, W, ACCESS

   216   01AE  6FE9                MOVWF 0xe9, BANKED

   217   01B0  C5F4                MOVFF 0x5f4, PRODL

   218   01B2  FFF3                NOP

   219   01B4  C5F5                MOVFF 0x5f5, PRODH

   220   01B6  FFF4                NOP

   221   01B8  C5F6                MOVFF 0x5f6, powerup

   222   01BA  F000                NOP

   223   01BC  C5F7                MOVFF 0x5f7, used_btemp4

   224   01BE  F001                NOP

   225   01C0  C5F8                MOVFF 0x5f8, 0x2

   226   01C2  F002                NOP

   227   01C4  C5F9                MOVFF 0x5f9, 0x3

   228   01C6  F003                NOP

   229   01C8  C5FA                MOVFF 0x5fa, intlevel0

   230   01CA  F004                NOP

   231   01CC  C5FB                MOVFF 0x5fb, 0x5

   232   01CE  F005                NOP

   233   01D0  C5FC                MOVFF 0x5fc, 0x6

   234   01D2  F006                NOP

   235   01D4  C5FD                MOVFF 0x5fd, 0x7

   236   01D6  F007                NOP

   237   01D8  C5FE                MOVFF 0x5fe, WREG

   238   01DA  FFE8                NOP

   239   01DC  C008                MOVFF saved_bsrh, BSR

   240   01DE  FFE0                NOP

   241   01E0  C5FF                MOVFF 0x5ff, STATUS

   242   01E2  FFD8                NOP

   243   01E4  0010                RETFIE 0

   244   01E6  FFFF                NOP

   245   01E8  D7A7                BRA 0x138

   246   01EA  FFFF                NOP

   247   01EC  CFE8                MOVFF WREG, 0x5fe

   248   01EE  F5FE                NOP

   249   01F0  C007                MOVFF 0x7, 0x5fd

   250   01F2  F5FD                NOP

   251   01F4  C006                MOVFF 0x6, 0x5fc

   252   01F6  F5FC                NOP

   253   01F8  C005                MOVFF 0x5, 0x5fb

   254   01FA  F5FB                NOP

   255   01FC  C004                MOVFF intlevel0, 0x5fa

   256   01FE  F5FA                NOP

   257   0200  C003                MOVFF 0x3, 0x5f9

   258   0202  F5F9                NOP

   259   0204  C002                MOVFF 0x2, 0x5f8

   260   0206  F5F8                NOP

   261   0208  C001                MOVFF used_btemp4, 0x5f7

   262   020A  F5F7                NOP

   263   020C  C000                MOVFF powerup, 0x5f6

   264   020E  F5F6                NOP

   265   0210  CFF4                MOVFF PRODH, 0x5f5

   266   0212  F5F5                NOP

   267   0214  CFF3                MOVFF PRODL, 0x5f4

   268   0216  F5F4                NOP

   269   0218  D78D                BRA hhandler

   270   021A  FFFF                NOP

   271   021C  6A06                CLRF 0x6, ACCESS

   272   021E  FFFF                NOP

   273   0220  6A04                CLRF intlevel0, ACCESS

   274   0222  6A05                CLRF 0x5, ACCESS

   275   0224  5002                MOVF 0x2, W, ACCESS

   276   0226  1003                IORWF 0x3, W, ACCESS

   277   0228  E103                BNZ 0x230

   278   022A  6A00                CLRF powerup, ACCESS

   279   022C  6A01                CLRF used_btemp4, ACCESS

   280   022E  0C00                RETLW 0

   281   0230  0E1F                MOVLW 0x1f

   282   0232  1206                IORWF 0x6, F, ACCESS

   283   0234  90D8                BCF STATUS, 0, ACCESS

   284   0236  2A06                INCF 0x6, F, ACCESS

   285   0238  3602                RLCF 0x2, F, ACCESS

   286   023A  3603                RLCF 0x3, F, ACCESS

   287   023C  E3FC                BNC 0x236

   288   023E  3203                RRCF 0x3, F, ACCESS

   289   0240  3202                RRCF 0x2, F, ACCESS

   290   0242  5002                MOVF 0x2, W, ACCESS

   291   0244  5C00                SUBWF powerup, W, ACCESS

   292   0246  5003                MOVF 0x3, W, ACCESS

   293   0248  5801                SUBWFB used_btemp4, W, ACCESS

   294   024A  E304                BNC 0x254

   295   024C  6E01                MOVWF used_btemp4, ACCESS

   296   024E  5002                MOVF 0x2, W, ACCESS

   297   0250  5E00                SUBWF powerup, F, ACCESS

   298   0252  80D8                BSF STATUS, 0, ACCESS

   299   0254  3604                RLCF intlevel0, F, ACCESS

   300   0256  3605                RLCF 0x5, F, ACCESS

   301   0258  2E06                DECFSZ 0x6, F, ACCESS

   302   025A  BA06                BTFSC 0x6, 0x5, ACCESS

   303   025C  D7F0                BRA 0x23e

   304   025E  AE06                BTFSS 0x6, 0x7, ACCESS

   305   0260  D005                BRA 0x26c

   306   0262  1E04                COMF intlevel0, F, ACCESS

   307   0264  2A04                INCF intlevel0, F, ACCESS

   308   0266  B4D8                BTFSC STATUS, 0x2, ACCESS

   309   0268  0605                DECF 0x5, F, ACCESS

   310   026A  1E05                COMF 0x5, F, ACCESS

   311   026C  5004                MOVF intlevel0, W, ACCESS

   312   026E  6E02                MOVWF 0x2, ACCESS

   313   0270  5005                MOVF 0x5, W, ACCESS

   314   0272  6E03                MOVWF 0x3, ACCESS

   315   0274  AC06                BTFSS 0x6, 0x6, ACCESS

   316   0276  0C00                RETLW 0

   317   0278  1E00                COMF powerup, F, ACCESS

   318   027A  2A00                INCF powerup, F, ACCESS

   319   027C  B4D8                BTFSC STATUS, 0x2, ACCESS

   320   027E  0601                DECF used_btemp4, F, ACCESS

   321   0280  1E01                COMF used_btemp4, F, ACCESS

   322   0282  0C00                RETLW 0

   323   0284  FFFF                NOP

   324   0286  6A06                CLRF 0x6, ACCESS

   325   0288  AE01                BTFSS used_btemp4, 0x7, ACCESS

   326   028A  D006                BRA 0x298

   327   028C  1E00                COMF powerup, F, ACCESS

   328   028E  4A00                INFSNZ powerup, F, ACCESS

   329   0290  0601                DECF used_btemp4, F, ACCESS

   330   0292  1E01                COMF used_btemp4, F, ACCESS

   331   0294  8C06                BSF 0x6, 0x6, ACCESS

   332   0296  8E06                BSF 0x6, 0x7, ACCESS

   333   0298  5003                MOVF 0x3, W, ACCESS

   334   029A  0B80                ANDLW 0x80

   335   029C  1A06                XORWF 0x6, F, ACCESS

   336   029E  AE03                BTFSS 0x3, 0x7, ACCESS

   337   02A0  EF0F                GOTO 0x21e

   338   02A2  F001                NOP

   339   02A4  1E02                COMF 0x2, F, ACCESS

   340   02A6  4A02                INFSNZ 0x2, F, ACCESS

   341   02A8  0603                DECF 0x3, F, ACCESS

   342   02AA  1E03                COMF 0x3, F, ACCESS

   343   02AC  EF0F                GOTO 0x21e

   344   02AE  F001                NOP

   345   02B0  FFFF                NOP

   346   02B2  5002                MOVF 0x2, W, ACCESS

   347   02B4  0200                MULWF powerup, ACCESS

   348   02B6  CFF3                MOVFF PRODL, intlevel0

   349   02B8  F004                NOP

   350   02BA  CFF4                MOVFF PRODH, 0x5

   351   02BC  F005                NOP

   352   02BE  0201                MULWF used_btemp4, ACCESS

   353   02C0  50F3                MOVF PRODL, W, ACCESS

   354   02C2  2605                ADDWF 0x5, F, ACCESS

   355   02C4  5003                MOVF 0x3, W, ACCESS

   356   02C6  0200                MULWF powerup, ACCESS

   357   02C8  50F3                MOVF PRODL, W, ACCESS

   358   02CA  2605                ADDWF 0x5, F, ACCESS

   359   02CC  0012                RETURN 0

   360   02CE  6AEE                CLRF POSTINC0, ACCESS

   361   02D0  FFFF                NOP

   362   02D2  50EA                MOVF FSR0H, W, ACCESS

   363   02D4  62E2                CPFSEQ FSR1H, ACCESS

   364   02D6  D7FB                BRA 0x2ce

   365   02D8  50E9                MOVF FSR0L, W, ACCESS

   366   02DA  62E1                CPFSEQ FSR1L, ACCESS

   367   02DC  D7F8                BRA 0x2ce

   368   02DE  0012                RETURN 0

   369   02E0  FFFF                NOP

   370   02E2  FFFF                NOP

   371   02E4  FFFF                NOP

   372   02E6  FFFF                NOP

   373   02E8  FFFF                NOP

--
sassi




More information about the Elektro mailing list