Support from the University of Birmingham for Legal Council
ENGINEERING AND COMPUTER WORKS
Block 738, #12-373, Woodlands Circle, Singapore 730738;
Level 28, PJ Exchange, No. 16A, Persiaran Barat, 46050 Petaling Jaya, Selangor Darul Ehsan, Kuala Lumpur, Malaysia
ph: +65 9173 7839(Singapore) ; +6017 396 7471(Malaysia)
fax: +65 63680320 (Singapore) ;
alt: +1 (503) 928 7953 ;
chanjunt
opt subtitle "HI-TECH Software Omniscient Code Generator (Lite mode) build 7503"
opt pagewidth 120
opt lm
processor 16F84A
clrc macro
bcf 3,0
endm
clrz macro
bcf 3,2
endm
setc macro
bsf 3,0
endm
setz macro
bsf 3,2
endm
skipc macro
btfss 3,0
endm
skipz macro
btfss 3,2
endm
skipnc macro
btfsc 3,0
endm
skipnz macro
btfsc 3,2
endm
indf equ 0
indf0 equ 0
pc equ 2
pcl equ 2
status equ 3
fsr equ 4
fsr0 equ 4
c equ 1
z equ 0
pclath equ 10
# 3 "D:\Local Disk\Evil genius\cPKLED\cPKLED.c"
psect config,class=CONFIG,delta=2 ;#
# 3 "D:\Local Disk\Evil genius\cPKLED\cPKLED.c"
dw 0xFFFD & 0xFFFB& 0xFFFF & 0xFFFF ;#
FNCALL _main,___awmod
FNROOT _main
global _i
global _j
global _k
global _PORTA
psect text111,local,class=CODE,delta=2
global __ptext111
__ptext111:
_PORTA set 5
global _PORTB
_PORTB set 6
global _RA3
_RA3 set 43
global _RA4
_RA4 set 44
global _OPTION_REG
_OPTION_REG set 129
global _TRISA
_TRISA set 133
global _TRISB
_TRISB set 134
file "8Bit Power Sequencer.as"
line #
psect cinit,class=CODE,delta=2
global start_initialization
start_initialization:
psect bssBANK0,class=BANK0,space=1
global __pbssBANK0
__pbssBANK0:
_i:
ds 2
_j:
ds 2
_k:
ds 2
; Clear objects allocated to BANK0
psect cinit,class=CODE,delta=2
clrf ((__pbssBANK0)+0)&07Fh
clrf ((__pbssBANK0)+1)&07Fh
clrf ((__pbssBANK0)+2)&07Fh
clrf ((__pbssBANK0)+3)&07Fh
clrf ((__pbssBANK0)+4)&07Fh
clrf ((__pbssBANK0)+5)&07Fh
psect cinit,class=CODE,delta=2
global end_of_initialization
;End of C runtime variable initialization code
end_of_initialization:
clrf status
ljmp _main ;jump to C main() function
psect cstackBANK0,class=BANK0,space=1
global __pcstackBANK0
__pcstackBANK0:
global ?_main
?_main: ; 2 bytes @ 0x0
global ?___awmod
?___awmod: ; 2 bytes @ 0x0
global ___awmod@divisor
___awmod@divisor: ; 2 bytes @ 0x0
ds 2
global ___awmod@dividend
___awmod@dividend: ; 2 bytes @ 0x2
ds 2
global ??___awmod
??___awmod: ; 0 bytes @ 0x4
ds 1
global ___awmod@counter
___awmod@counter: ; 1 bytes @ 0x5
ds 1
global ___awmod@sign
___awmod@sign: ; 1 bytes @ 0x6
ds 1
global ??_main
??_main: ; 0 bytes @ 0x7
ds 2
;;Data sizes: Strings 0, constant 0, data 0, bss 6, persistent 0 stack 0
;;Auto spaces: Size Autos Used
;; COMMON 0 0 0
;; BANK0 66 9 15
;;
;; Pointer list with targets:
;; ?___awmod int size(1) Largest target is 0
;;
;;
;; Critical Paths under _main in COMMON
;;
;; None.
;;
;; Critical Paths under _main in BANK0
;;
;; _main->___awmod
;;
;;Main: autosize = 0, tempsize = 2, incstack = 0, save=0
;;
;;
;;Call Graph Tables:
;;
;; ---------------------------------------------------------------------------------
;; (Depth) Function Calls Base Space Used Autos Params Refs
;; ---------------------------------------------------------------------------------
;; (0) _main 2 2 0 296
;; 7 BANK0 2 2 0
;; ___awmod
;; ---------------------------------------------------------------------------------
;; (1) ___awmod 7 3 4 296
;; 0 BANK0 7 3 4
;; ---------------------------------------------------------------------------------
;; Estimated maximum stack depth 1
;; ---------------------------------------------------------------------------------
;; Call Graph Graphs:
;; _main (ROOT)
;; ___awmod
;;
;; Address spaces:
;;Name Size Autos Total Cost Usage
;;BITCOMMON 0 0 0 0 0.0%
;;EEDATA 40 0 0 0 0.0%
;;NULL 0 0 0 0 0.0%
;;CODE 0 0 0 0 0.0%
;;BITSFR0 0 0 0 1 0.0%
;;SFR0 0 0 0 1 0.0%
;;COMMON 0 0 0 1 0.0%
;;BITSFR1 0 0 0 2 0.0%
;;SFR1 0 0 0 2 0.0%
;;STACK 0 0 1 2 0.0%
;;BANK0 42 9 F 3 22.7%
;;ABS 0 0 F 4 0.0%
;;BITBANK0 42 0 0 5 0.0%
;;DATA 0 0 10 6 0.0%
global _main
psect maintext,global,class=CODE,delta=2
global __pmaintext
__pmaintext:
;; *************** function _main *****************
;; Defined at:
;; line 9 in file "D:\Local Disk\Evil genius\cPKLED\cPKLED.c"
;; Parameters: Size Location Type
;; None
;; Auto vars: Size Location Type
;; None
;; Return value: Size Location Type
;; 2 172[BANK0 ] int
;; Registers used:
;; wreg, fsr0l, fsr0h, status,2, status,0, btemp+1, pclath, cstack
;; Tracked objects:
;; On entry : 17F/0
;; On exit : 0/0
;; Unchanged: 0/0
;; Data sizes: COMMON BANK0
;; Params: 0 0
;; Locals: 0 0
;; Temps: 0 2
;; Totals: 0 2
;;Total ram usage: 2 bytes
;; Hardware stack levels required when called: 1
;; This function calls:
;; ___awmod
;; This function is called by:
;; Startup code after reset
;; This function uses a non-reentrant model
;;
psect maintext
file "D:\Local Disk\Evil genius\cPKLED\cPKLED.c"
line 9
global __size_of_main
__size_of_main equ __end_of_main-_main
_main:
opt stack 7
; Regs used in _main: [wreg-fsr0h+status,2+status,0+btemp+1+pclath+cstack]
line 11
l1680:
;cPKLED.c: 11: PORTA = 0;
bcf status, 5 ;RP0=0, select bank0
clrf (5) ;volatile
line 12
l1682:
;cPKLED.c: 12: OPTION_REG=48;
movlw (030h)
bsf status, 5 ;RP0=1, select bank1
movwf (129)^080h ;volatile
goto l1684
line 14
;cPKLED.c: 13: {
;cPKLED.c: 14: a123: if (0 == RA3)
l173:
l1684:
bcf status, 5 ;RP0=0, select bank0
btfsc (43/8),(43)&7
goto u2331
goto u2330
u2331:
goto l174
u2330:
line 16
l1686:
;cPKLED.c: 15: {
;cPKLED.c: 16: RA3 = 0;
bcf (43/8),(43)&7
line 18
;cPKLED.c: 18: goto a123;
goto l1684
line 19
l1688:
;cPKLED.c: 19: }
goto l1690
line 21
l174:
line 24
;cPKLED.c: 21: else
;cPKLED.c: 22: {
;cPKLED.c: 24: RA3 = 1;
bsf (43/8),(43)&7
line 27
;cPKLED.c: 27: goto d;
goto l1710
line 28
l175:
line 34
l1690:
;cPKLED.c: 28: }
;cPKLED.c: 29: }
;cPKLED.c: 34: k = 0;
clrf (_k)
clrf (_k+1)
line 38
;cPKLED.c: 38: a: PORTA=0b0000;
l177:
clrf (5) ;volatile
line 39
;cPKLED.c: 39: TRISA=0b0000;
bsf status, 5 ;RP0=1, select bank1
clrf (133)^080h ;volatile
line 42
;cPKLED.c: 41: {
;cPKLED.c: 42: for (i = 0; i < 255; i++)
bcf status, 5 ;RP0=0, select bank0
clrf (_i)
clrf (_i+1)
l1692:
movf (_i+1),w
xorlw 80h
movwf btemp+1
movlw (high(0FFh))^80h
subwf btemp+1,w
skipz
goto u2345
movlw low(0FFh)
subwf (_i),w
u2345:
skipc
goto u2341
goto u2340
u2341:
goto l1696
u2340:
goto l1758
l1694:
goto l1758
line 43
l178:
l1696:
;cPKLED.c: 43: for (j = 0; j < 129; j++);
bcf status, 5 ;RP0=0, select bank0
clrf (_j)
clrf (_j+1)
l1698:
movf (_j+1),w
xorlw 80h
movwf btemp+1
movlw (high(081h))^80h
subwf btemp+1,w
skipz
goto u2355
movlw low(081h)
subwf (_j),w
u2355:
skipc
goto u2351
goto u2350
u2351:
goto l1702
u2350:
goto l1706
l1700:
goto l1706
l180:
l1702:
movlw low(01h)
bcf status, 5 ;RP0=0, select bank0
addwf (_j),f
skipnc
incf (_j+1),f
movlw high(01h)
addwf (_j+1),f
l1704:
movf (_j+1),w
xorlw 80h
movwf btemp+1
movlw (high(081h))^80h
subwf btemp+1,w
skipz
goto u2365
movlw low(081h)
subwf (_j),w
u2365:
skipc
goto u2361
goto u2360
u2361:
goto l1702
u2360:
goto l1706
l181:
line 42
l1706:
movlw low(01h)
bcf status, 5 ;RP0=0, select bank0
addwf (_i),f
skipnc
incf (_i+1),f
movlw high(01h)
addwf (_i+1),f
l1708:
movf (_i+1),w
xorlw 80h
movwf btemp+1
movlw (high(0FFh))^80h
subwf btemp+1,w
skipz
goto u2375
movlw low(0FFh)
subwf (_i),w
u2375:
skipc
goto u2371
goto u2370
u2371:
goto l1696
u2370:
goto l1758
l179:
line 45
;cPKLED.c: 45: switch (k) {
goto l1758
line 46
;cPKLED.c: 46: d: case 0:
l176:
goto l1710
l183:
line 47
l1710:
;cPKLED.c: 47: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 48
;cPKLED.c: 48: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 49
;cPKLED.c: 49: break;
goto l184
line 50
;cPKLED.c: 50: case 1:
l185:
line 51
l1712:
;cPKLED.c: 51: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 52
;cPKLED.c: 52: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 53
;cPKLED.c: 53: break;
goto l184
line 54
;cPKLED.c: 54: case 2:
l186:
line 55
l1714:
;cPKLED.c: 55: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 56
;cPKLED.c: 56: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 57
;cPKLED.c: 57: break;
goto l184
line 58
;cPKLED.c: 58: case 3:
l187:
line 59
l1716:
;cPKLED.c: 59: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 60
;cPKLED.c: 60: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 61
;cPKLED.c: 61: break;
goto l184
line 62
;cPKLED.c: 62: case 4:
l188:
line 63
l1718:
;cPKLED.c: 63: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 64
;cPKLED.c: 64: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 65
;cPKLED.c: 65: break;
goto l184
line 66
;cPKLED.c: 66: case 5:
l189:
line 67
l1720:
;cPKLED.c: 67: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 68
;cPKLED.c: 68: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 69
;cPKLED.c: 69: break;
goto l184
line 70
;cPKLED.c: 70: case 6:
l190:
line 71
l1722:
;cPKLED.c: 71: PORTB = 0b10000000;
movlw (080h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 72
;cPKLED.c: 72: TRISB = 0b01111111;
movlw (07Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 73
;cPKLED.c: 73: break;
goto l184
line 74
;cPKLED.c: 74: case 7:
l191:
line 75
l1724:
;cPKLED.c: 75: PORTB = 0b11000000;
movlw (0C0h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 76
;cPKLED.c: 76: TRISB = 0b00111111;
movlw (03Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 77
;cPKLED.c: 77: break;
goto l184
line 78
;cPKLED.c: 78: case 8:
l192:
line 79
l1726:
;cPKLED.c: 79: PORTB = 0b11100000;
movlw (0E0h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 80
;cPKLED.c: 80: TRISB = 0b00011111;
movlw (01Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 81
;cPKLED.c: 81: break;
goto l184
line 82
;cPKLED.c: 82: case 9:
l193:
line 83
l1728:
;cPKLED.c: 83: PORTB = 0b11110000;
movlw (0F0h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 84
;cPKLED.c: 84: TRISB = 0b00001111;
movlw (0Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 85
;cPKLED.c: 85: break;
goto l184
line 86
;cPKLED.c: 86: case 10:
l194:
line 87
l1730:
;cPKLED.c: 87: PORTB = 0b11111000;
movlw (0F8h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 88
;cPKLED.c: 88: TRISB = 0b00000111;
movlw (07h)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 89
;cPKLED.c: 89: break;
goto l184
line 90
;cPKLED.c: 90: case 11:
l195:
line 91
l1732:
;cPKLED.c: 91: PORTB = 0b11111100;
movlw (0FCh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 92
;cPKLED.c: 92: TRISB = 0b00000011;
movlw (03h)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 93
;cPKLED.c: 93: break;
goto l184
line 94
;cPKLED.c: 94: case 12:
l196:
line 95
l1734:
;cPKLED.c: 95: PORTB = 0b11111110;
movlw (0FEh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 96
;cPKLED.c: 96: TRISB = 0b00000001;
movlw (01h)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 97
;cPKLED.c: 97: break;
goto l184
line 98
;cPKLED.c: 98: case 13:
l197:
line 99
l1736:
;cPKLED.c: 99: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 100
l1738:
;cPKLED.c: 100: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 101
;cPKLED.c: 101: break;
goto l184
line 102
;cPKLED.c: 102: case 14:
l198:
line 103
l1740:
;cPKLED.c: 103: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 104
l1742:
;cPKLED.c: 104: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
goto l1744
line 105
;cPKLED.c: 105: case 15:
l199:
line 106
l1744:
;cPKLED.c: 106: PORTA = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (5) ;volatile
line 107
;cPKLED.c: 107: TRISA = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (133)^080h ;volatile
goto l1746
line 108
;cPKLED.c: 108: case 16:
l200:
line 109
l1746:
;cPKLED.c: 109: PORTA = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (5) ;volatile
line 110
l1748:
;cPKLED.c: 110: TRISA = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (133)^080h ;volatile
line 111
;cPKLED.c: 111: case 17:
l201:
line 112
;cPKLED.c: 112: PORTA = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (5) ;volatile
line 113
l1750:
;cPKLED.c: 113: TRISA = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (133)^080h ;volatile
goto l1752
line 114
;cPKLED.c: 114: case 18:
l202:
line 115
l1752:
;cPKLED.c: 115: PORTA = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (5) ;volatile
line 116
;cPKLED.c: 116: TRISA = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (133)^080h ;volatile
goto l203
line 120
l1754:
;cPKLED.c: 120: return 0;
; Return value of _main is never used
goto l203
line 121
l1756:
;cPKLED.c: 121: }
goto l184
line 45
l182:
l1758:
; Switch on 2 bytes has been partitioned into a top level switch of size 1, and 1 sub-switches
; Switch size 1, requested type "space"
; Number of cases is 1, Range of values is 0 to 0
; switch strategies available:
; Name Instructions Cycles
; simple_byte 4 3 (average)
; direct_byte 7 6 (fixed)
; jumptable 260 6 (fixed)
; rangetable 5 6 (fixed)
; spacedrange 8 9 (fixed)
; locatedrange 1 3 (fixed)
; Chosen strategy is simple_byte
bcf status, 5 ;RP0=0, select bank0
movf (_k+1),w
opt asmopt_off
xorlw 0^0 ; case 0
skipnz
goto l1930
goto l184
opt asmopt_on
l1930:
; Switch size 1, requested type "space"
; Number of cases is 19, Range of values is 0 to 18
; switch strategies available:
; Name Instructions Cycles
; direct_byte 25 6 (fixed)
; simple_byte 58 30 (average)
; jumptable 260 6 (fixed)
; rangetable 23 6 (fixed)
; spacedrange 44 9 (fixed)
; locatedrange 19 3 (fixed)
; Chosen strategy is direct_byte
movf (_k),w
movwf fsr
movlw 19
subwf fsr,w
skipnc
goto l184
movlw high(S1932)
movwf pclath
movlw low(S1932)
addwf fsr,w
movwf pc
psect swtext1,local,class=CONST,delta=2
global __pswtext1
__pswtext1:
S1932:
ljmp l1710
ljmp l1712
ljmp l1714
ljmp l1716
ljmp l1718
ljmp l1720
ljmp l1722
ljmp l1724
ljmp l1726
ljmp l1728
ljmp l1730
ljmp l1732
ljmp l1734
ljmp l1736
ljmp l1740
ljmp l1744
ljmp l1746
ljmp l201
ljmp l1752
psect maintext
line 121
l184:
line 128
;cPKLED.c: 126: {
;cPKLED.c: 128: if (0 == RA4)
bcf status, 5 ;RP0=0, select bank0
btfsc (44/8),(44)&7
goto u2381
goto u2380
u2381:
goto l204
u2380:
line 130
l1760:
;cPKLED.c: 129: {
;cPKLED.c: 130: RA4 = 0;
bcf (44/8),(44)&7
line 131
l1762:
;cPKLED.c: 131: k = (k + 1) % 18;
movlw low(012h)
movwf (?___awmod)
movlw high(012h)
movwf ((?___awmod))+1
movf (_k),w
addlw low(01h)
movwf 0+(?___awmod)+02h
movf (_k+1),w
skipnc
addlw 1
addlw high(01h)
movwf 1+0+(?___awmod)+02h
fcall ___awmod
bcf status, 5 ;RP0=0, select bank0
movf (1+(?___awmod)),w
clrf (_k+1)
addwf (_k+1)
movf (0+(?___awmod)),w
clrf (_k)
addwf (_k)
line 132
;cPKLED.c: 132: goto a;
goto l177
line 133
l1764:
;cPKLED.c: 133: }
goto l203
line 135
l204:
line 138
;cPKLED.c: 135: else
;cPKLED.c: 136: {
;cPKLED.c: 138: RA4 = 1;
bsf (44/8),(44)&7
line 140
l1766:
;cPKLED.c: 140: k = 0;
clrf (_k)
clrf (_k+1)
line 143
;cPKLED.c: 142: {
;cPKLED.c: 143: b: for (i = 0; i < 255; i++)
l206:
clrf (_i)
clrf (_i+1)
l1768:
movf (_i+1),w
xorlw 80h
movwf btemp+1
movlw (high(0FFh))^80h
subwf btemp+1,w
skipz
goto u2395
movlw low(0FFh)
subwf (_i),w
u2395:
skipc
goto u2391
goto u2390
u2391:
goto l1772
u2390:
goto l1830
l1770:
goto l1830
line 144
l207:
l1772:
;cPKLED.c: 144: for (j = 0; j < 129; j++);
bcf status, 5 ;RP0=0, select bank0
clrf (_j)
clrf (_j+1)
l1774:
movf (_j+1),w
xorlw 80h
movwf btemp+1
movlw (high(081h))^80h
subwf btemp+1,w
skipz
goto u2405
movlw low(081h)
subwf (_j),w
u2405:
skipc
goto u2401
goto u2400
u2401:
goto l1778
u2400:
goto l1782
l1776:
goto l1782
l209:
l1778:
movlw low(01h)
bcf status, 5 ;RP0=0, select bank0
addwf (_j),f
skipnc
incf (_j+1),f
movlw high(01h)
addwf (_j+1),f
l1780:
movf (_j+1),w
xorlw 80h
movwf btemp+1
movlw (high(081h))^80h
subwf btemp+1,w
skipz
goto u2415
movlw low(081h)
subwf (_j),w
u2415:
skipc
goto u2411
goto u2410
u2411:
goto l1778
u2410:
goto l1782
l210:
line 143
l1782:
movlw low(01h)
bcf status, 5 ;RP0=0, select bank0
addwf (_i),f
skipnc
incf (_i+1),f
movlw high(01h)
addwf (_i+1),f
l1784:
movf (_i+1),w
xorlw 80h
movwf btemp+1
movlw (high(0FFh))^80h
subwf btemp+1,w
skipz
goto u2425
movlw low(0FFh)
subwf (_i),w
u2425:
skipc
goto u2421
goto u2420
u2421:
goto l1772
u2420:
goto l1830
l208:
line 146
;cPKLED.c: 146: switch (k) {
goto l1830
line 147
;cPKLED.c: 147: case 0:
l212:
line 148
l1786:
;cPKLED.c: 148: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 149
l1788:
;cPKLED.c: 149: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 150
;cPKLED.c: 150: break;
goto l1832
line 151
;cPKLED.c: 151: case 1:
l214:
line 152
l1790:
;cPKLED.c: 152: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 153
l1792:
;cPKLED.c: 153: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
goto l1794
line 154
;cPKLED.c: 154: case 2:
l215:
line 155
l1794:
;cPKLED.c: 155: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 156
;cPKLED.c: 156: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
goto l1796
line 157
;cPKLED.c: 157: case 3:
l216:
line 158
l1796:
;cPKLED.c: 158: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 159
l1798:
;cPKLED.c: 159: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 160
;cPKLED.c: 160: case 4:
l217:
line 161
;cPKLED.c: 161: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 162
l1800:
;cPKLED.c: 162: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
goto l1802
line 163
;cPKLED.c: 163: case 5:
l218:
line 164
l1802:
;cPKLED.c: 164: PORTB = 0b11111111;
movlw (0FFh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 165
;cPKLED.c: 165: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
goto l1804
line 166
;cPKLED.c: 166: case 6:
l219:
line 167
l1804:
;cPKLED.c: 167: PORTB = 0b11111110;
movlw (0FEh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 168
l1806:
;cPKLED.c: 168: TRISB = 0b00000001;
movlw (01h)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 169
;cPKLED.c: 169: break;
goto l1832
line 170
;cPKLED.c: 170: case 7:
l220:
line 171
l1808:
;cPKLED.c: 171: PORTB = 0b11111100;
movlw (0FCh)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 172
;cPKLED.c: 172: TRISB = 0b00000011;
movlw (03h)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 173
;cPKLED.c: 173: break;
goto l1832
line 174
;cPKLED.c: 174: case 8:
l221:
line 175
l1810:
;cPKLED.c: 175: PORTB = 0b11111000;
movlw (0F8h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 176
;cPKLED.c: 176: TRISB = 0b00000111;
movlw (07h)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 177
;cPKLED.c: 177: break;
goto l1832
line 178
;cPKLED.c: 178: case 9:
l222:
line 179
l1812:
;cPKLED.c: 179: PORTB = 0b11110000;
movlw (0F0h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 180
;cPKLED.c: 180: TRISB = 0b00001111;
movlw (0Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 181
;cPKLED.c: 181: break;
goto l1832
line 182
;cPKLED.c: 182: case 10:
l223:
line 183
l1814:
;cPKLED.c: 183: PORTB = 0b11100000;
movlw (0E0h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 184
;cPKLED.c: 184: TRISB = 0b00011111;
movlw (01Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 185
;cPKLED.c: 185: break;
goto l1832
line 186
;cPKLED.c: 186: case 11:
l224:
line 187
l1816:
;cPKLED.c: 187: PORTB = 0b11000000;
movlw (0C0h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 188
;cPKLED.c: 188: TRISB = 0b00111111;
movlw (03Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 189
;cPKLED.c: 189: break;
goto l1832
line 190
;cPKLED.c: 190: case 12:
l225:
line 191
l1818:
;cPKLED.c: 191: PORTB = 0b10000000;
movlw (080h)
bcf status, 5 ;RP0=0, select bank0
movwf (6) ;volatile
line 192
;cPKLED.c: 192: TRISB = 0b01111111;
movlw (07Fh)
bsf status, 5 ;RP0=1, select bank1
movwf (134)^080h ;volatile
line 193
;cPKLED.c: 193: break;
goto l1832
line 194
;cPKLED.c: 194: case 13:
l226:
line 195
l1820:
;cPKLED.c: 195: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 196
;cPKLED.c: 196: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 197
;cPKLED.c: 197: break;
goto l1832
line 198
;cPKLED.c: 198: case 14:
l227:
line 199
l1822:
;cPKLED.c: 199: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 200
;cPKLED.c: 200: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 201
;cPKLED.c: 201: case 15:
l228:
line 202
;cPKLED.c: 202: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 203
;cPKLED.c: 203: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 204
;cPKLED.c: 204: case 16:
l229:
line 205
;cPKLED.c: 205: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 206
;cPKLED.c: 206: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 207
;cPKLED.c: 207: case 17:
l230:
line 208
;cPKLED.c: 208: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 209
;cPKLED.c: 209: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 210
;cPKLED.c: 210: case 18:
l231:
line 211
;cPKLED.c: 211: PORTB = 0b00000000;
bcf status, 5 ;RP0=0, select bank0
clrf (6) ;volatile
line 212
;cPKLED.c: 212: TRISB = 0b00000000;
bsf status, 5 ;RP0=1, select bank1
clrf (134)^080h ;volatile
line 216
l1824:
;cPKLED.c: 216: k = (k + 1) % 18;
movlw low(012h)
bcf status, 5 ;RP0=0, select bank0
movwf (?___awmod)
movlw high(012h)
movwf ((?___awmod))+1
movf (_k),w
addlw low(01h)
movwf 0+(?___awmod)+02h
movf (_k+1),w
skipnc
addlw 1
addlw high(01h)
movwf 1+0+(?___awmod)+02h
fcall ___awmod
bcf status, 5 ;RP0=0, select bank0
movf (1+(?___awmod)),w
clrf (_k+1)
addwf (_k+1)
movf (0+(?___awmod)),w
clrf (_k)
addwf (_k)
goto l203
line 218
l1826:
;cPKLED.c: 218: return 0;
; Return value of _main is never used
goto l203
line 219
l1828:
;cPKLED.c: 219: }
goto l1832
line 146
l211:
l1830:
; Switch on 2 bytes has been partitioned into a top level switch of size 1, and 1 sub-switches
; Switch size 1, requested type "space"
; Number of cases is 1, Range of values is 0 to 0
; switch strategies available:
; Name Instructions Cycles
; simple_byte 4 3 (average)
; direct_byte 7 6 (fixed)
; jumptable 260 6 (fixed)
; rangetable 5 6 (fixed)
; spacedrange 8 9 (fixed)
; locatedrange 1 3 (fixed)
; Chosen strategy is simple_byte
bcf status, 5 ;RP0=0, select bank0
movf (_k+1),w
opt asmopt_off
xorlw 0^0 ; case 0
skipnz
goto l1934
goto l1832
opt asmopt_on
l1934:
; Switch size 1, requested type "space"
; Number of cases is 19, Range of values is 0 to 18
; switch strategies available:
; Name Instructions Cycles
; direct_byte 25 6 (fixed)
; simple_byte 58 30 (average)
; jumptable 260 6 (fixed)
; rangetable 23 6 (fixed)
; spacedrange 44 9 (fixed)
; locatedrange 19 3 (fixed)
; Chosen strategy is direct_byte
movf (_k),w
movwf fsr
movlw 19
subwf fsr,w
skipnc
goto l1832
movlw high(S1936)
movwf pclath
movlw low(S1936)
addwf fsr,w
movwf pc
psect swtext2,local,class=CONST,delta=2
global __pswtext2
__pswtext2:
S1936:
ljmp l1786
ljmp l1790
ljmp l1794
ljmp l1796
ljmp l217
ljmp l1802
ljmp l1804
ljmp l1808
ljmp l1810
ljmp l1812
ljmp l1814
ljmp l1816
ljmp l1818
ljmp l1820
ljmp l1822
ljmp l228
ljmp l229
ljmp l230
ljmp l231
psect maintext
line 219
l213:
line 223
l1832:
;cPKLED.c: 220: }
;cPKLED.c: 223: k = (k + 1) % 16;
bcf status, 5 ;RP0=0, select bank0
movf (_k),w
addlw low(01h)
movwf (??_main+0)+0
movf (_k+1),w
skipnc
addlw 1
addlw high(01h)
movwf 1+(??_main+0)+0
movlw low(0Fh)
andwf 0+(??_main+0)+0,w
movwf (_k)
movlw high(0Fh)
andwf 1+(??_main+0)+0,w
movwf 1+(_k)
line 225
;cPKLED.c: 225: goto b;
goto l206
line 226
l205:
line 230
l203:
global start
ljmp start
opt stack 0
GLOBAL __end_of_main
__end_of_main:
;; =============== function _main ends ============
signat _main,90
global ___awmod
psect text112,local,class=CODE,delta=2
global __ptext112
__ptext112:
;; *************** function ___awmod *****************
;; Defined at:
;; line 5 in file "C:\Program Files\HI-TECH Software\PICC\9.81\sources\awmod.c"
;; Parameters: Size Location Type
;; divisor 2 0[BANK0 ] int
;; dividend 2 2[BANK0 ] int
;; Auto vars: Size Location Type
;; sign 1 6[BANK0 ] unsigned char
;; counter 1 5[BANK0 ] unsigned char
;; Return value: Size Location Type
;; 2 0[BANK0 ] int
;; Registers used:
;; wreg, status,2, status,0
;; Tracked objects:
;; On entry : 0/0
;; On exit : 0/0
;; Unchanged: 0/0
;; Data sizes: COMMON BANK0
;; Params: 0 4
;; Locals: 0 2
;; Temps: 0 1
;; Totals: 0 7
;;Total ram usage: 7 bytes
;; Hardware stack levels used: 1
;; This function calls:
;; Nothing
;; This function is called by:
;; _main
;; This function uses a non-reentrant model
;;
psect text112
file "C:\Program Files\HI-TECH Software\PICC\9.81\sources\awmod.c"
line 5
global __size_of___awmod
__size_of___awmod equ __end_of___awmod-___awmod
___awmod:
opt stack 7
; Regs used in ___awmod: [wreg+status,2+status,0]
line 8
l1646:
bcf status, 5 ;RP0=0, select bank0
clrf (___awmod@sign)
line 9
btfss (___awmod@dividend+1),7
goto u2241
goto u2240
u2241:
goto l1650
u2240:
line 10
l1648:
comf (___awmod@dividend),f
comf (___awmod@dividend+1),f
incf (___awmod@dividend),f
skipnz
incf (___awmod@dividend+1),f
line 11
clrf (___awmod@sign)
bsf status,0
rlf (___awmod@sign),f
goto l1650
line 12
l448:
line 13
l1650:
btfss (___awmod@divisor+1),7
goto u2251
goto u2250
u2251:
goto l1654
u2250:
line 14
l1652:
comf (___awmod@divisor),f
comf (___awmod@divisor+1),f
incf (___awmod@divisor),f
skipnz
incf (___awmod@divisor+1),f
goto l1654
l449:
line 15
l1654:
movf (___awmod@divisor+1),w
iorwf (___awmod@divisor),w
skipnz
goto u2261
goto u2260
u2261:
goto l1672
u2260:
line 16
l1656:
clrf (___awmod@counter)
bsf status,0
rlf (___awmod@counter),f
line 17
goto l1662
l452:
line 18
l1658:
movlw 01h
u2275:
clrc
rlf (___awmod@divisor),f
rlf (___awmod@divisor+1),f
addlw -1
skipz
goto u2275
line 19
l1660:
movlw (01h)
movwf (??___awmod+0)+0
movf (??___awmod+0)+0,w
addwf (___awmod@counter),f
goto l1662
line 20
l451:
line 17
l1662:
btfss (___awmod@divisor+1),(15)&7
goto u2281
goto u2280
u2281:
goto l1658
u2280:
goto l1664
l453:
goto l1664
line 21
l454:
line 22
l1664:
movf (___awmod@divisor+1),w
subwf (___awmod@dividend+1),w
skipz
goto u2295
movf (___awmod@divisor),w
subwf (___awmod@dividend),w
u2295:
skipc
goto u2291
goto u2290
u2291:
goto l1668
u2290:
line 23
l1666:
movf (___awmod@divisor),w
subwf (___awmod@dividend),f
movf (___awmod@divisor+1),w
skipc
decf (___awmod@dividend+1),f
subwf (___awmod@dividend+1),f
goto l1668
l455:
line 24
l1668:
movlw 01h
u2305:
clrc
rrf (___awmod@divisor+1),f
rrf (___awmod@divisor),f
addlw -1
skipz
goto u2305
line 25
l1670:
movlw low(01h)
subwf (___awmod@counter),f
btfss status,2
goto u2311
goto u2310
u2311:
goto l1664
u2310:
goto l1672
l456:
goto l1672
line 26
l450:
line 27
l1672:
movf (___awmod@sign),w
skipz
goto u2320
goto l1676
u2320:
line 28
l1674:
comf (___awmod@dividend),f
comf (___awmod@dividend+1),f
incf (___awmod@dividend),f
skipnz
incf (___awmod@dividend+1),f
goto l1676
l457:
line 29
l1676:
movf (___awmod@dividend+1),w
clrf (?___awmod+1)
addwf (?___awmod+1)
movf (___awmod@dividend),w
clrf (?___awmod)
addwf (?___awmod)
goto l458
l1678:
line 30
l458:
return
opt stack 0
GLOBAL __end_of___awmod
__end_of___awmod:
;; =============== function ___awmod ends ============
signat ___awmod,8314
psect text113,local,class=CODE,delta=2
global __ptext113
__ptext113:
global btemp
btemp set 04Eh
DABS 1,78,2 ;btemp
global wtemp0
wtemp0 set btemp
end
Control System source code in Assembly Language for a new controller utilising LED built in-house for Engineering and Computer Works.
Please view video at http://1drv.ms/U92cWR
For more information, please contact chanjunthoong@theiet.org .
Copyright 2012 ENGINEERING AND COMPUTER WORKS. All rights reserved.
ENGINEERING AND COMPUTER WORKS
Block 738, #12-373, Woodlands Circle, Singapore 730738;
Level 28, PJ Exchange, No. 16A, Persiaran Barat, 46050 Petaling Jaya, Selangor Darul Ehsan, Kuala Lumpur, Malaysia
ph: +65 9173 7839(Singapore) ; +6017 396 7471(Malaysia)
fax: +65 63680320 (Singapore) ;
alt: +1 (503) 928 7953 ;
chanjunt