Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Възможно ли е това?
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=9805
Страница 1 от 1

Автор:  lolomgwtf [ Пет Яну 20, 2012 7:20 pm ]
Заглавие:  Възможно ли е това?

Възможно ли е програма написана на BASIC да се конвертира с няква програма в асемблер-става дума за една схема на цифров часовник с PIC16-дадена е схемата и кода написан BASIC, а на мен ми трябва да е на асемблер??? Някви идеи
Няям никва представа от програмиране, но това много ми трябва за даскало, тряя да си избера схема с някъв микроконтролер, който да има и програма на асемблер/аз си избрах, но пише, че е на BASIC, а пък файла има разширение asm-това пък не е ли разширението за асемблер-нещо не са ми ясни тия неща-самият код си личи, че не е на асемблер, щото в програмата няма командите, които са за този контролер
http://www.micro-examples.com/public/mi ... larm-clock

ето го кода на програмата? Може ли да се направи на асемблер? Много ми трябва

Сори може би съм писал пълни простотии, но за всеки случай да питам!

Автор:  ike [ Пет Яну 20, 2012 7:27 pm ]
Заглавие:  Re: Възможно ли е това?

Не можеш ли да си потърсиш проект написан вече на асемблер
http://www.google.com/search?q=pic16f84 ... 3dsgaP1ZFI

Автор:  Бай Ставри [ Пет Яну 20, 2012 7:45 pm ]
Заглавие:  Re: Възможно ли е това?

:D

Прикачени файлове:
Радиолюбительские конструкции на PIC-микроконтроллерах, книга 1 (Н.Заец, 2003).rar [3.34 MiB]
179 пъти

Автор:  lolomgwtf [ Пет Яну 20, 2012 8:13 pm ]
Заглавие:  Re: Възможно ли е това?

Трябва ми точно за тази схема-търсих в гугъл за някъв софтуер който да прай от бейсик в асемблер, но много сложно ми изглежда и не мога да го напрая-изтегли си тая програма micro basic и вкарах basic кода и не знам после кво да прая
http://www.micro-examples.com/public/mi ... lator.html

моля ви ако някой има идея как да напрая кода в асемблер


тая книга я изтеглих, но е на руски и там има подобна схема на часовник с програмата, но не мога да си го преведа щото е в някъв странен формат и не мога да копирам тест и тем подобни

Автор:  Бай Ставри [ Пет Яну 20, 2012 8:20 pm ]
Заглавие:  Re: Възможно ли е това?

lolomgwtf написа:
Трябва ми точно за тази схема-търсих в гугъл за някъв софтуер който да прай от бейсик в асемблер, но много сложно ми изглежда и не мога да го напрая-изтегли си тая програма micro basic и вкарах basic кода и не знам после кво да прая
http://www.micro-examples.com/public/mi ... lator.html

моля ви ако някой има идея как да напрая кода в асемблер


тая книга я изтеглих, но е на руски и там има подобна схема на часовник с програмата, но не мога да си го преведа щото е в някъв странен формат и не мога да копирам тест и тем подобни


Що не си го препишеш????

Прикачени файлове:
Приложение к книге_Радиолюбительские конструкции на PIC-микроконтроллерах, книга 1 (Н.Заец, 2003).zip [118.92 KiB]
178 пъти

Автор:  relsys [ Пет Яну 20, 2012 10:01 pm ]
Заглавие:  Re: Възможно ли е това?

Ето ти го на асемблер, к'во ще правиш с него обаче незнам...

Код:
test_interrupt:
        MOVWF      R15+0
        SWAPF      STATUS+0, 0
        CLRF       STATUS+0
        MOVWF      ___saveSTATUS+0
        MOVF       PCLATH+0, 0
        MOVWF      ___savePCLATH+0
        CLRF       PCLATH+0

;test.mbas,74 ::                 dim i as byte
;test.mbas,79 ::                 scaler = scaler + 1
        INCF       _scaler+0, 1
        BTFSC      STATUS+0, 2
        INCF       _scaler+1, 1
;test.mbas,80 ::                 if scaler > maxcount
        MOVF       _scaler+1, 0
        SUBWF      _maxcount+1, 0
        BTFSS      STATUS+0, 2
        GOTO       L_test_interrupt108
        MOVF       _scaler+0, 0
        SUBWF      _maxcount+0, 0
L_test_interrupt108:
        BTFSC      STATUS+0, 0
        GOTO       L_test_interrupt2
;test.mbas,82 ::                 scaler = 0
        CLRF       _scaler+0
        CLRF       _scaler+1
;test.mbas,84 ::                 inc(ss)
        INCF       _ss+0, 1
;test.mbas,85 ::                 if ss = 60
        MOVF       _ss+0, 0
        XORLW      60
        BTFSS      STATUS+0, 2
        GOTO       L_test_interrupt5
;test.mbas,87 ::                 ss = 0
        CLRF       _ss+0
;test.mbas,88 ::                 inc(mn)
        INCF       _mn+0, 1
;test.mbas,89 ::                 if mn = 60
        MOVF       _mn+0, 0
        XORLW      60
        BTFSS      STATUS+0, 2
        GOTO       L_test_interrupt8
;test.mbas,91 ::                 mn = 0
        CLRF       _mn+0
;test.mbas,92 ::                 inc(hh)
        INCF       _hh+0, 1
;test.mbas,93 ::                 if hh = 24
        MOVF       _hh+0, 0
        XORLW      24
        BTFSS      STATUS+0, 2
        GOTO       L_test_interrupt11
;test.mbas,95 ::                 hh = 0
        CLRF       _hh+0
;test.mbas,96 ::                 inc(jj)
        INCF       _jj+0, 1
;test.mbas,97 ::                 if jj = 8
        MOVF       _jj+0, 0
        XORLW      8
        BTFSS      STATUS+0, 2
        GOTO       L_test_interrupt14
;test.mbas,99 ::                 jj = 1
        MOVLW      1
        MOVWF      _jj+0
L_test_interrupt14:
;test.mbas,100 ::                 end if
L_test_interrupt11:
;test.mbas,101 ::                 end if
L_test_interrupt8:
;test.mbas,102 ::                 end if
L_test_interrupt5:
;test.mbas,103 ::                 end if
L_test_interrupt2:
;test.mbas,115 ::                 #else
        MOVLW      15
        IORWF      PORTA+0, 1
;test.mbas,116 ::                 PORTA = PORTA or $0f
        MOVLW      15
        MOVWF      TRISA+0
;test.mbas,117 ::                 TRISA = $0f
        MOVF       PORTA+0, 0
        MOVWF      _key+0
;test.mbas,118 ::                 key = PORTA
        COMF       _key+0, 1
;test.mbas,119 ::                 key = not(key)
        CLRF       TRISA+0
;test.mbas,120 ::                 TRISA = 0
        MOVLW      255
        MOVWF      PORTB+0
;test.mbas,122 ::                 #endif
        MOVLW      7
        ANDWF      _key+0, 1
;test.mbas,124 ::                 
        INCF       _digit+0, 1
;test.mbas,126 ::                 
        MOVF       _digit+0, 0
        SUBLW      3
        BTFSC      STATUS+0, 0
        GOTO       L_test_interrupt17
;test.mbas,128 ::                 then
        CLRF       _digit+0
;test.mbas,129 ::                 digit = 0
        MOVLW      1
        MOVWF      R1+0
        GOTO       L_test_interrupt18
;test.mbas,130 ::                 i = $01
L_test_interrupt17:
;test.mbas,131 ::                 else
        MOVF       _digit+0, 0
        MOVWF      R0+0
        MOVLW      1
        MOVWF      R1+0
        MOVF       R0+0, 0
L_test_interrupt109:
        BTFSC      STATUS+0, 2
        GOTO       L_test_interrupt110
        RLF        R1+0, 1
        BCF        R1+0, 0
        ADDLW      255
        GOTO       L_test_interrupt109
L_test_interrupt110:
;test.mbas,132 ::                 i = $01 << digit
L_test_interrupt18:
;test.mbas,137 ::                 PORTA = PORTA or i
        MOVF       _digit+0, 0
        ADDLW      _digiled+0
        MOVWF      FSR
        MOVF       INDF+0, 0
        MOVWF      PORTB+0
;test.mbas,138 ::                 #else
        COMF       PORTB+0, 0
        MOVWF      R0+0
        MOVF       R0+0, 0
        MOVWF      PORTB+0
;test.mbas,139 ::                 PORTB = digiled[digit]
        COMF       R1+0, 0
        MOVWF      R0+0
        MOVF       R0+0, 0
        ANDWF      PORTA+0, 1
;test.mbas,142 ::                 #endif
        BCF        INTCON+0, 2
L_test_interrupt107:
        MOVF       ___savePCLATH+0, 0
        MOVWF      PCLATH+0
        SWAPF      ___saveSTATUS+0, 0
        MOVWF      STATUS+0
        SWAPF      R15+0, 1
        SWAPF      R15+0, 0
        RETFIE
; end of test_interrupt

test_intTo7seg:

;test.mbas,148 ::                 ' converts digit to 7 segment
;test.mbas,150 ::                 sub function intTo7seg(dim n as byte) as byte
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      0
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg23
        MOVLW      63
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg23:
;test.mbas,151 ::                 select case n
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      1
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg26
        MOVLW      6
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg26:
;test.mbas,152 ::                 case 0  result = $3F
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      2
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg29
        MOVLW      91
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg29:
;test.mbas,153 ::                 case 1  result = $06
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      3
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg32
        MOVLW      79
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg32:
;test.mbas,154 ::                 case 2  result = $5B
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      4
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg35
        MOVLW      102
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg35:
;test.mbas,155 ::                 case 3  result = $4F
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      5
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg38
        MOVLW      109
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg38:
;test.mbas,156 ::                 case 4  result = $66
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      6
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg41
        MOVLW      125
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg41:
;test.mbas,157 ::                 case 5  result = $6D
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      7
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg44
        MOVLW      7
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg44:
;test.mbas,158 ::                 case 6  result = $7D
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      8
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg47
        MOVLW      127
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg47:
;test.mbas,159 ::                 case 7  result = $07
        MOVF       FARG_intTo7seg_n+0, 0
        XORLW      9
        BTFSS      STATUS+0, 2
        GOTO       L_test_intTo7seg50
        MOVLW      111
        MOVWF      R1+0
        GOTO       L_test_intTo7seg20
L_test_intTo7seg50:
L_test_intTo7seg20:
;test.mbas,160 ::                 case 8  result = $7F
        MOVF       R1+0, 0
        MOVWF      R0+0
        RETURN
; end of test_intTo7seg

test_setValue:

;test.mbas,167 ::                 ' value is pointed to by v, display char s as header, maximum value is max
;test.mbas,168 ::                 '
        MOVF       FARG_setValue_s+0, 0
        MOVWF      _digiled+0
;test.mbas,169 ::                 sub procedure setValue(dim v as ^byte, dim s as byte, dim max as byte)
        CLRF       _digiled+1
;test.mbas,171 ::                 digiled[1] = 0
L_test_setValue53:
;test.mbas,172 ::                 
        BTFSS      _key+0, 0
        GOTO       L_test_setValue58
;test.mbas,174 ::                 if key.0
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        INCF       INDF+0, 0
        MOVWF      R0+0
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       R0+0, 0
        MOVWF      INDF+0
;test.mbas,175 ::                 then
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       INDF+0, 0
        SUBWF      FARG_setValue_max+0, 0
        BTFSC      STATUS+0, 0
        GOTO       L_test_setValue61
;test.mbas,177 ::                 if(v^ > max)
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        CLRF       INDF+0
L_test_setValue61:
;test.mbas,178 ::                 then
L_test_setValue58:
;test.mbas,181 ::                 end if
        BTFSS      _key+0, 1
        GOTO       L_test_setValue64
;test.mbas,183 ::                 if key.1
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       INDF+0, 0
        XORLW      0
        BTFSS      STATUS+0, 2
        GOTO       L_test_setValue67
;test.mbas,185 ::                 if(v^ = 0)
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       FARG_setValue_max+0, 0
        MOVWF      INDF+0
        GOTO       L_test_setValue68
;test.mbas,186 ::                 then
L_test_setValue67:
;test.mbas,187 ::                 v^ = max
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        DECF       INDF+0, 0
        MOVWF      R0+0
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       R0+0, 0
        MOVWF      INDF+0
;test.mbas,188 ::                 else
L_test_setValue68:
L_test_setValue64:
;test.mbas,191 ::                 end if
        BTFSS      _key+0, 2
        GOTO       L_test_setValue70
;test.mbas,193 ::                 if key.2
        MOVLW      130
        MOVWF      R12+0
        MOVLW      221
        MOVWF      R13+0
L_test_setValue72:
        DECFSZ     R13+0, 1
        GOTO       L_test_setValue72
        DECFSZ     R12+0, 1
        GOTO       L_test_setValue72
        NOP
        NOP
;test.mbas,194 ::                 then
L_test_setValue74:
        BTFSS      _key+0, 2
        GOTO       L_test_setValue75
;test.mbas,195 ::                 Delay_ms(50)
        GOTO       L_test_setValue74
L_test_setValue75:
;test.mbas,196 ::                 while key.2
        MOVLW      130
        MOVWF      R12+0
        MOVLW      221
        MOVWF      R13+0
L_test_setValue78:
        DECFSZ     R13+0, 1
        GOTO       L_test_setValue78
        DECFSZ     R12+0, 1
        GOTO       L_test_setValue78
        NOP
        NOP
;test.mbas,197 ::                 wend
        CLRF       _scaler+0
        CLRF       _scaler+1
;test.mbas,198 ::                 Delay_ms(50)
        CLRF       _ss+0
;test.mbas,199 ::                 scaler = 0
        RETURN
L_test_setValue70:
;test.mbas,202 ::                 end if
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       INDF+0, 0
        MOVWF      R0+0
        MOVLW      10
        MOVWF      R4+0
        CALL       _Div_8x8_U+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+2
;test.mbas,203 ::                 
        MOVF       FARG_setValue_v+0, 0
        MOVWF      FSR
        MOVF       INDF+0, 0
        MOVWF      R0+0
        MOVLW      10
        MOVWF      R4+0
        CALL       _Div_8x8_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+3
;test.mbas,205 ::                 digiled[3] = intTo7seg(v^ mod 10)
        MOVLW      4
        MOVWF      R11+0
        MOVLW      12
        MOVWF      R12+0
        MOVLW      51
        MOVWF      R13+0
L_test_setValue79:
        DECFSZ     R13+0, 1
        GOTO       L_test_setValue79
        DECFSZ     R12+0, 1
        GOTO       L_test_setValue79
        DECFSZ     R11+0, 1
        GOTO       L_test_setValue79
        NOP
        NOP
;test.mbas,206 ::                 
        GOTO       L_test_setValue53
        RETURN
; end of test_setValue

_main:

;test.mbas,213 ::                 '
;test.mbas,218 ::                 ' init variables
        CLRF       _dp+0
;test.mbas,220 ::                 dp = 0
        CLRF       _hh+0
;test.mbas,221 ::                 
        CLRF       _mn+0
;test.mbas,222 ::                 hh = 0
        CLRF       _ss+0
;test.mbas,223 ::                 mn = 0
        CLRF       _jj+0
;test.mbas,225 ::                 jj = 0
        MOVLW      9
        MOVWF      _maxcount+0
        MOVLW      61
        MOVWF      _maxcount+1
;test.mbas,230 ::                 ' init I/O
        MOVLW      16
        MOVWF      PORTA+0
;test.mbas,231 ::                 '
        CLRF       TRISA+0
;test.mbas,233 ::                 TRISA = %00000000
        CLRF       PORTB+0
;test.mbas,234 ::                 
        CLRF       TRISB+0
;test.mbas,239 ::                 ' init interrupts
        MOVLW      160
        MOVWF      INTCON+0
;test.mbas,240 ::                 '
        MOVLW      216
        MOVWF      OPTION_REG+0
;test.mbas,242 ::                 OPTION_REG = %11011000
        MOVLW      130
        MOVWF      R12+0
        MOVLW      221
        MOVWF      R13+0
L__main81:
        DECFSZ     R13+0, 1
        GOTO       L__main81
        DECFSZ     R12+0, 1
        GOTO       L__main81
        NOP
        NOP
;test.mbas,247 ::                 ' clock adjustment
        MOVLW      _hh+0
        MOVWF      FARG_setValue_v+0
        MOVLW      116
        MOVWF      FARG_setValue_s+0
        MOVLW      23
        MOVWF      FARG_setValue_max+0
        CALL       test_setValue+0
;test.mbas,248 ::                 '
        MOVLW      _mn+0
        MOVWF      FARG_setValue_v+0
        MOVLW      55
        MOVWF      FARG_setValue_s+0
        MOVLW      59
        MOVWF      FARG_setValue_max+0
        CALL       test_setValue+0
;test.mbas,249 ::                 setValue(@hh, 116, 23)
        MOVLW      _jj+0
        MOVWF      FARG_setValue_v+0
        MOVLW      14
        MOVWF      FARG_setValue_s+0
        MOVLW      6
        MOVWF      FARG_setValue_max+0
        CALL       test_setValue+0
;test.mbas,254 ::                 ' forever loop
L__main83:
;test.mbas,255 ::                 '
        MOVF       _key+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L__main88
;test.mbas,260 ::                 ' display day and seconds (what for ? don't remember !)
        MOVF       _jj+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+0
;test.mbas,261 ::                 '
        CLRF       _digiled+1
;test.mbas,262 ::                 digiled[0] = intTo7seg(jj)
        MOVLW      10
        MOVWF      R4+0
        MOVF       _ss+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+2
;test.mbas,263 ::                 digiled[1] = 0
        MOVLW      10
        MOVWF      R4+0
        MOVF       _ss+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+3
        GOTO       L__main89
;test.mbas,264 ::                 digiled[2] = intTo7seg(ss / 10)
L__main88:
;test.mbas,268 ::                 ' display hours and minutes
        MOVLW      10
        SUBWF      _hh+0, 0
        BTFSC      STATUS+0, 0
        GOTO       L__main91
;test.mbas,270 ::                 if hh < 10
        CLRF       _digiled+0
;test.mbas,271 ::                 then
        MOVF       _hh+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+1
        GOTO       L__main92
;test.mbas,272 ::                 digiled[0] = 0
L__main91:
;test.mbas,273 ::                 digiled[1] = intTo7seg(hh)
        MOVLW      10
        MOVWF      R4+0
        MOVF       _hh+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+0
;test.mbas,274 ::                 else
        MOVLW      10
        MOVWF      R4+0
        MOVF       _hh+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+1
;test.mbas,275 ::                 digiled[0] = intTo7seg(hh / 10)
L__main92:
;test.mbas,276 ::                 digiled[1] = intTo7seg(hh mod 10)
        MOVLW      10
        MOVWF      R4+0
        MOVF       _mn+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+2
;test.mbas,277 ::                 end if
        MOVLW      10
        MOVWF      R4+0
        MOVF       _mn+0, 0
        MOVWF      R0+0
        CALL       _Div_8x8_U+0
        MOVF       R8+0, 0
        MOVWF      R0+0
        MOVF       R0+0, 0
        MOVWF      FARG_intTo7seg_n+0
        CALL       test_intTo7seg+0
        MOVF       R0+0, 0
        MOVWF      _digiled+3
;test.mbas,278 ::                 digiled[2] = intTo7seg(mn / 10)
L__main89:
;test.mbas,283 ::                 ' blinks semicolon (or decimal point)
        MOVF       _maxcount+0, 0
        MOVWF      R1+0
        MOVF       _maxcount+1, 0
        MOVWF      R1+1
        RRF        R1+1, 1
        RRF        R1+0, 1
        BCF        R1+1, 7
        MOVF       _scaler+1, 0
        SUBWF      R1+1, 0
        BTFSS      STATUS+0, 2
        GOTO       L__main111
        MOVF       _scaler+0, 0
        SUBWF      R1+0, 0
L__main111:
        BTFSC      STATUS+0, 0
        GOTO       L__main94
;test.mbas,285 ::                 if scaler > maxcount / 2
        BSF        _dp+0, 1
        GOTO       L__main95
;test.mbas,286 ::                 then
L__main94:
;test.mbas,287 ::                 dp.1 = 1
        BCF        _dp+0, 1
;test.mbas,288 ::                 else
L__main95:
;test.mbas,293 ::                 ' set decimal points
        BTFSC      _dp+0, 0
        GOTO       L__main112
        BCF        _digiled+0, 7
        GOTO       L__main113
L__main112:
        BSF        _digiled+0, 7
L__main113:
;test.mbas,294 ::                 '
        BTFSC      _dp+0, 1
        GOTO       L__main114
        BCF        _digiled+1, 7
        GOTO       L__main115
L__main114:
        BSF        _digiled+1, 7
L__main115:
;test.mbas,295 ::                 digiled[0].7 = dp.0
        BTFSC      _dp+0, 2
        GOTO       L__main116
        BCF        _digiled+2, 7
        GOTO       L__main117
L__main116:
        BSF        _digiled+2, 7
L__main117:
;test.mbas,296 ::                 digiled[1].7 = dp.1
        BTFSC      _dp+0, 3
        GOTO       L__main118
        BCF        _digiled+3, 7
        GOTO       L__main119
L__main118:
        BSF        _digiled+3, 7
L__main119:
;test.mbas,301 ::                 ' check for alarm condition
        CLRF       _alarm+0
;test.mbas,302 ::                 '
        CLRF       _i+0
L__main97:
;test.mbas,303 ::                 alarm = 0
        MOVF       _i+0, 0
        ADDLW      _alarmTable+0
        MOVWF      R0+0
        MOVLW      hi_addr(_alarmTable+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        MOVWF      R0+1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R0+0
        MOVF       R0+0, 0
        XORWF      _jj+0, 0
        MOVLW      255
        BTFSS      STATUS+0, 2
        MOVLW      0
        MOVWF      R2+0
        MOVF       _i+0, 0
        ADDLW      _alarmTable+0
        MOVWF      R0+0
        MOVLW      hi_addr(_alarmTable+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        MOVWF      R0+1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R0+0
        MOVF       R0+0, 0
        XORLW      7
        MOVLW      255
        BTFSS      STATUS+0, 2
        MOVLW      0
        MOVWF      R1+0
        MOVLW      5
        SUBWF      _jj+0, 0
        MOVLW      255
        BTFSC      STATUS+0, 0
        MOVLW      0
        MOVWF      R0+0
        MOVF       R1+0, 0
        ANDWF      R0+0, 1
        MOVF       R0+0, 0
        IORWF      R2+0, 1
;test.mbas,304 ::                 for i = 0 to (NBALARM - 1) * 4
        INCF       _i+0, 0
        MOVWF      R0+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _alarmTable+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_alarmTable+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R1+0
        MOVF       R1+0, 0
        XORWF      _hh+0, 0
        MOVLW      255
        BTFSS      STATUS+0, 2
        MOVLW      0
        MOVWF      R0+0
        MOVF       R0+0, 0
        ANDWF      R2+0, 1
;test.mbas,305 ::                 if ((alarmTable[i] = jj) or ((alarmTable[i] = LMMJV) and (jj < SAMEDI)))
        MOVLW      2
        ADDWF      _i+0, 0
        MOVWF      R0+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _alarmTable+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_alarmTable+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R1+0
        MOVF       R1+0, 0
        XORWF      _mn+0, 0
        MOVLW      255
        BTFSS      STATUS+0, 2
        MOVLW      0
        MOVWF      R0+0
        MOVF       R0+0, 0
        ANDWF      R2+0, 1
;test.mbas,306 ::                 and (alarmTable[i + 1] = hh)
        MOVLW      3
        ADDWF      _i+0, 0
        MOVWF      R0+0
        MOVLW      0
        MOVWF      R0+1
        MOVLW      _alarmTable+0
        ADDWF      R0+0, 1
        MOVLW      hi_addr(_alarmTable+0)
        BTFSC      STATUS+0, 0
        ADDLW      1
        ADDWF      R0+1, 1
        MOVF       R0+0, 0
        MOVWF      ___DoICPAddr+0
        MOVF       R0+1, 0
        MOVWF      ___DoICPAddr+1
        CALL       _____DoICP+0
        MOVWF      R1+0
        MOVF       R1+0, 0
        SUBWF      _ss+0, 0
        MOVLW      255
        BTFSC      STATUS+0, 0
        MOVLW      0
        MOVWF      R0+0
        MOVF       R2+0, 0
        ANDWF      R0+0, 1
        BTFSC      STATUS+0, 2
        GOTO       L__main102
;test.mbas,308 ::                 and (alarmTable[i + 3] > ss)
        INCF       _alarm+0, 1
L__main102:
;test.mbas,310 ::                 inc(alarm)
        MOVF       _i+0, 0
        XORLW      60
        BTFSC      STATUS+0, 2
        GOTO       L__main100
        INCF       _i+0, 1
        GOTO       L__main97
L__main100:
;test.mbas,312 ::                 next i
        MOVF       _alarm+0, 0
        BTFSC      STATUS+0, 2
        GOTO       L__main105
;test.mbas,317 ::                 ' set alarm
        BSF        _dp+0, 3
;test.mbas,318 ::                 '
        BCF        PORTA+0, 4
        GOTO       L__main106
;test.mbas,319 ::                 dp.3 = 1
L__main105:
;test.mbas,323 ::                 ' clear alarm
        BCF        _dp+0, 3
;test.mbas,324 ::                 '
        BSF        PORTA+0, 4
;test.mbas,325 ::                 dp.3 = 0
L__main106:
;test.mbas,326 ::                 PORTA.4 = 1
        GOTO       L__main83
        GOTO       $+0
; end of _main

Автор:  Cekins [ Пет Яну 20, 2012 10:33 pm ]
Заглавие:  Re: Възможно ли е това?

И да не забравиш да махнеш редовете с ; ... Това е бейсиковата програма. Съответно може да се заменят с коментари за да изглежда по истинско. Ама всеки който е написал 10-тина програми за пик може да разпознае генериран код от ръчно написан :) MicroBasic ;)

Автор:  Tisho [ Съб Фев 04, 2012 10:36 pm ]
Заглавие:  Re: Възможно ли е това?

Cekins написа:
И да не забравиш да махнеш редовете с ; ... Това е бейсиковата програма. Съответно може да се заменят с коментари за да изглежда по истинско. Ама всеки който е написал 10-тина програми за пик може да разпознае генериран код от ръчно написан :) MicroBasic ;)


; - повечето ASM компилатори приемат за коментар...

Автор:  Cekins [ Нед Фев 05, 2012 9:57 pm ]
Заглавие:  Re: Възможно ли е това?

То очевидно няма да минава през компилатор а ще се показва като домашно :)

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/