Отговори на тема  [ 9 мнения ] 
Възможно ли е това? 
Автор Съобщение
Ранг: Минаващ
Ранг: Минаващ

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

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

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


Пет Яну 20, 2012 7:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог

Регистриран на: Пет Фев 04, 2005 9:59 pm
Мнения: 6019
Местоположение: София
Мнение Re: Възможно ли е това?
Не можеш ли да си потърсиш проект написан вече на асемблер
http://www.google.com/search?q=pic16f84 ... 3dsgaP1ZFI

_________________
Warriors of the Night, ASSEMBLER!!!


Пет Яну 20, 2012 7:27 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Май 27, 2011 8:25 am
Мнения: 134
Местоположение: Силистра
Мнение Re: Възможно ли е това?
:D



_________________
Изображение
Пет Яну 20, 2012 7:45 pm
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пон Яну 09, 2012 7:42 pm
Мнения: 6
Мнение Re: Възможно ли е това?
Трябва ми точно за тази схема-търсих в гугъл за някъв софтуер който да прай от бейсик в асемблер, но много сложно ми изглежда и не мога да го напрая-изтегли си тая програма micro basic и вкарах basic кода и не знам после кво да прая
http://www.micro-examples.com/public/mi ... lator.html

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


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


Пет Яну 20, 2012 8:13 pm
Профил
Ранг: Новодошъл
Ранг: Новодошъл

Регистриран на: Пет Май 27, 2011 8:25 am
Мнения: 134
Местоположение: Силистра
Мнение Re: Възможно ли е това?
lolomgwtf написа:
Трябва ми точно за тази схема-търсих в гугъл за някъв софтуер който да прай от бейсик в асемблер, но много сложно ми изглежда и не мога да го напрая-изтегли си тая програма micro basic и вкарах basic кода и не знам после кво да прая
http://www.micro-examples.com/public/mi ... lator.html

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


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


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



_________________
Изображение
Пет Яну 20, 2012 8:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пет Ное 25, 2005 11:41 am
Мнения: 1680
Мнение 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


Пет Яну 20, 2012 10:01 pm
Профил ICQ WWW
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Възможно ли е това?
И да не забравиш да махнеш редовете с ; ... Това е бейсиковата програма. Съответно може да се заменят с коментари за да изглежда по истинско. Ама всеки който е написал 10-тина програми за пик може да разпознае генериран код от ръчно написан :) MicroBasic ;)


Пет Яну 20, 2012 10:33 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Ное 22, 2004 11:24 pm
Мнения: 1923
Местоположение: Габрово
Мнение Re: Възможно ли е това?
Cekins написа:
И да не забравиш да махнеш редовете с ; ... Това е бейсиковата програма. Съответно може да се заменят с коментари за да изглежда по истинско. Ама всеки който е написал 10-тина програми за пик може да разпознае генериран код от ръчно написан :) MicroBasic ;)


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


Съб Фев 04, 2012 10:36 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Сря Апр 20, 2005 12:02 pm
Мнения: 9119
Местоположение: Разград
Мнение Re: Възможно ли е това?
То очевидно няма да минава през компилатор а ще се показва като домашно :)


Нед Фев 05, 2012 9:57 pm
Профил ICQ
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 9 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 4 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни