Stránka 1 z 2

Kódový zámek s atmel2051

Napsal: 23 úno 2009, 22:44
od Ondrey
Dobry den, zostavil som si

Kód: Vybrat vše

http://elektronika.kvalitne.cz/ATMEL/kodzamek1/KodZamek2.html


ked chcem dany program skompilovat pre 2051 objavi sa tam mnozstvo cchyb.

Pripajam log:

Kód: Vybrat vše

      PAGE 1

                       1            #0000
****--------------------------------^
****ERROR #8: Illegal assembly line
                       2            ;pro prekladac ASM51
                       3            ;nastaveno pro krystal 12MHz
0020                   4            bseg    at 20h
0020                   5    Stav:   dbit    1
0021                   6    Pipat:  dbit    1
0022                   7    PrvniStisk:     dbit    1
0023                   8    KodzEEPROM:     dbit    1
0024                   9    NovyKod:        dbit    1
                      10   
0030                  11            dseg    at 30h
0030                  12    Zasobnik:       ds      40
0058                  13    PipT:   ds      1
0059                  14    PipN:   ds      1
005A                  15    PipD:   ds      1
005B                  16    PipL:   ds      1
                      17            ;definice vstupu/vystupu
  0000                18    SCL     equ     P3.0    ;hodiny EEPROM
****-------------------------------------------^
****ERROR #17: Illegal bit designator
  0000                19    SDA     equ     P3.1    ;data EEPROM
****-------------------------------------------^
****ERROR #17: Illegal bit designator
                      20            ;adresovaci vyvody A0 - A2 musi byt uzemneny
  0000                21    Pipak   equ     P3.5    ;vystup pro piezo a LED
****-------------------------------------------^
****ERROR #17: Illegal bit designator
  0000                22    SaveKod equ     P3.4    ;vkladani noveho kodu (pri log.0)
****-------------------------------------------^
****ERROR #17: Illegal bit designator
  0000                23    Vystup  equ     P3.7    ;vystup (aktivni - log.0)
****-------------------------------------------^
****ERROR #17: Illegal bit designator
  0000                24    ModeSelect      equ     P3.3    ;volba modu
****---------------------------------------------------^
****ERROR #17: Illegal bit designator
                      25            ;0 - kodem zapni, kodem vypni
                      26            ;1 - Kodem zapni, vypne samo po nastavene dobe
  000A                27    ZpozdeneOff     equ     10      ;zpozdene vypnuti (od 4!!! do 255 vterin)
  0037                28    Vterina equ     55      ;timto se nastavuje delka 1 vteriny
  0050                29    AutoResetTime   equ     80      ;doba za kterou se od posledniho stisku
                      30                            ;resetuje kod, 25=asi 1 vterina
                      31            ;zacatek kodu
----                  32            cseg
                      33            ;pocatecni nastaveni nekterych neuzitecnych promennych
0000 7500FF           34    Init:   mov     P1,#255
****----------------------------------------^
****ERROR #2: Undefined symbol
0003 7500FF           35            mov     P3,#255
****----------------------------------------^
****ERROR #2: Undefined symbol
0006 7D00             36            mov     R5,#0
0008 7E00             37            mov     R6,#0
000A 750030           38            mov     sp,#Zasobnik
****----------------------------------------^
****ERROR #2: Undefined symbol
ZAMEK                                                                                                         PAGE 2

000D D220             39            setb    Stav
000F D221             40            setb    Pipat
0011 C223             41            clr     KodzEEPROM
0013 D222             42            setb    PrvniStisk
0015 C224             43            clr     NovyKod
0017 C200             44            clr     rs0
****----------------------------------------^
****ERROR #2: Undefined symbol
0019 C200             45            clr     rs1
****----------------------------------------^
****ERROR #2: Undefined symbol
001B 7400             46            mov     a,#0
001D 750001           47            mov     b,#1
****----------------------------------------^
****ERROR #2: Undefined symbol
0020 3126             48            acall   Delay
                      49            ;zacatek programu
                      50            ;je pripojena EEPROM ?
0022 31FE             51            acall   I2CStart
0024 74A0             52            mov     a,#10100000b
0026 513A             53            acall   I2CPosilej
0028 401D             54            jc      EEPROMNeni
                      55            ;zjisti jesi v ni neco je
002A 7400             56            mov     a,#00000000b
002C 513A             57            acall   I2CPosilej
002E 31FE             58            acall   I2CStart
0030 74A1             59            mov     a,#10100001b
0032 513A             60            acall   I2CPosilej     
0034 5116             61            acall   I2CCti
0036 510D             62            acall   I2CStop
                      63            ;vkladani noveho kodu?
0038 200007           64            jb      SaveKod,EEPROMJe
                      65            ;do EEPROM se bude vkladat kod
003B 51BC             66    PodelalTo:      acall   SmazUvodniZ
003D D224             67            setb    NovyKod
003F 02025C           68            jmp     ZapisZnakuu
                      69            ;z EEPROM se bude cist kod
0042 B46402           70    EEPROMJe:       cjne    a,#100,EEPROMNeni
0045 D223             71    EEPROMJeTest:   setb    KodzEEPROM
                      72            ;pamet neni pripojena
0047 740A             73    EEPROMNeni:     mov     a,#10
0049 750014           74            mov     b,#20
****----------------------------------------^
****ERROR #2: Undefined symbol
004C 3126             75            acall   Delay
004E 7E00             76            mov     R6,#0
                      77           
                      78            ;porovnavani cisla kodu se zadanym cislem
                      79            ;reset
                      80            ;nejdriv zjisti jesi se zapisuje novy kod
0050 302412           81    Reset:  jnb     NovyKod,Neres1
                      82            ;jo zapisuje
0053 EE               83            mov     a,R6
                      84            ;jesi R6=0, tak to neres a skoc na Neres1
0054 600F             85            jz      Neres1
                      86            ;R6 vetsi nez 0, takze to nekdo podelal - 3x dlouze pipni
0056 7419             87            mov     a,#25
0058 750032           88            mov     b,#50
****----------------------------------------^
ZAMEK                                                                                                         PAGE 3

****ERROR #2: Undefined symbol
005B 3126             89            acall   Delay
005D 31B8             90            acall   Pip3xLong
                      91            ;a vrat se na zacatek zadavani noveho kodu
005F D222             92            setb    PrvniStisk
0061 7E00             93            mov     R6,#0
0063 80D6             94            jmp     PodelalTo
                      95            ;normalni reset
0065 7E00             96    Neres1: mov     R6,#0   ;pozice znaku v kodu
0067 7B00             97            mov     R3,#0
                      98            ;smycka, kde se ctou tlacitka
0069 3139             99    Smycka: acall   CtiButony
006B 0B              100            inc     R3
006C BB5002          101            cjne    R3,#AutoResetTime,DalRad1
006F 80DF            102            jmp     Reset
0071 60F6            103    DalRad1:        jz      Smycka
0073 7B00            104            mov     R3,#0
0075 318B            105            acall   Pip1xShort
                     106            ;prekodovani klavesnice
0077 9002D4          107            mov     dptr,#Dekoder
007A 93              108            movc    a,@a+dptr
007B FF              109            mov     R7,a    ;v R7 stisknute cislo
                     110            ;nacteni R6-teho cisla
                     111            ;vyber jestli z PROM nebo EEPROM
007C 202308          112            jb      KodzEEPROM,Pamet1
                     113            ;z PROM
007F 9002CD          114            mov     dptr,#Kod
0082 EE              115            mov     a,R6
0083 93              116            movc    a,@a+dptr
0084 02009B          117            jmp     DeASCII
                     118            ;z EEPROM
0087 31FE            119    Pamet1: acall   I2CStart
0089 74A0            120            mov     a,#10100000b
008B 513A            121            acall   I2CPosilej
008D EE              122            mov     a,R6
008E 04              123            inc     a
008F 513A            124            acall   I2CPosilej
0091 31FE            125            acall   I2CStart
0093 74A1            126            mov     a,#10100001b
0095 513A            127            acall   I2CPosilej
0097 5116            128            acall   I2CCti
0099 510D            129            acall   I2CStop
                     130            ;prevod z ASCII na norm. cislo
009B C3              131    DeASCII:        clr     c
009C 9430            132            subb    a,#48
                     133            ;srovnani
009E 6F              134            xrl     a,R7
009F 0E              135            inc     R6      ;dalsi cislo v kodu
00A0 70AE            136            jnz     Reset   ;kdyz nesedi, tak reset
                     137            ;uz konec?
                     138            ;vyber jestli z PROM nebo EEPROM
                     139            ;z PROM
00A2 202305          140            jb      KodzEEPROM,Pamet2
00A5 EE              141            mov     a,R6
00A6 93              142            movc    a,@a+dptr
00A7 0200BE          143            jmp     UzKonecKodu
                     144            ;z EEPROM
ZAMEK                                                                                                         PAGE 4

00AA 31FE            145    Pamet2: acall   I2CStart
00AC 74A0            146            mov     a,#10100000b
00AE 513A            147            acall   I2CPosilej
00B0 EE              148            mov     a,R6
00B1 04              149            inc     a
00B2 513A            150            acall   I2CPosilej
00B4 31FE            151            acall   I2CStart
00B6 74A1            152            mov     a,#10100001b
00B8 513A            153            acall   I2CPosilej
00BA 5116            154            acall   I2CCti
00BC 510D            155            acall   I2CStop
                     156            ;ted to zkus   
00BE B4FF63          157    UzKonecKodu:    cjne    a,#255,DalsiProsim
                     158            ;uz to byl konec
                     159            ;prubni jestli slo o zapis noveho kodu do pameti
00C1 30240D          160            jnb     NovyKod,Pamet3
                     161            ;zapis noveho kodu - zapis uvodniho znaku
00C4 51AB            162            acall   ZapisUvodniZ
                     163            ;zpozdeni a 3x pip
00C6 741E            164            mov     a,#30
00C8 750019          165            mov     b,#25
****----------------------------------------^
****ERROR #2: Undefined symbol
00CB 3126            166            acall   Delay
00CD 319A            167            acall   Pip3xShort
00CF 80FE            168            jmp     $       ;zacykleni
                     169            ;sepni / vypni vystup
00D1 741E            170    Pamet3: mov     a,#30
00D3 750019          171            mov     b,#25
****----------------------------------------^
****ERROR #2: Undefined symbol
00D6 3126            172            acall   Delay
                     173            ;konec zpozdeni
                     174            ;mod 1 nebo 2 ?
00D8 200037          175            jb      ModeSelect,Mode1
                     176            ;mod 2
                     177            ;zapnuti
00DB 319A            178            acall   Pip3xShort
00DD C200            179            clr     Vystup
00DF C220            180            clr     Stav
                     181            ;vypnuti
00E1 740A            182            mov     a,#ZpozdeneOff
00E3 C3              183            clr     c
00E4 9404            184            subb    a,#4
00E6 F8              185            mov     R0,a
                     186            ;tu cekej ZpozdeneOff - 4 vterin a blikej LEDkou
00E7 7437            187    Mode2Loop1:     mov     a,#Vterina
00E9 750023          188            mov     b,#35
****----------------------------------------^
****ERROR #2: Undefined symbol
00EC 3126            189            acall   Delay
00EE C221            190            clr     Pipat
00F0 318B            191            acall   Pip1xShort
00F2 D221            192            setb    Pipat
00F4 D8F1            193            djnz    R0,Mode2Loop1
                     194            ;tu cekej 3 vteriny a jeste pipej
00F6 7803            195            mov     R0,#3
00F8 7437            196    Mode2Loop2:     mov     a,#Vterina
ZAMEK                                                                                                         PAGE 5

00FA 750023          197            mov     b,#35
****----------------------------------------^
****ERROR #2: Undefined symbol
00FD 3126            198            acall   Delay
00FF 318B            199            acall   Pip1xShort      ;1x pipni
0101 D8F5            200            djnz    R0,Mode2Loop2   
                     201            ;tu uz pipni dlouze a deaktivuj vystup
0103 7437            202            mov     a,#Vterina
0105 75001E          203            mov     b,#30
****----------------------------------------^
****ERROR #2: Undefined symbol
0108 3126            204            acall   Delay
010A 31A9            205            acall   Pip1xLong       ;1x dlouze pipni
010C D200            206            setb    Vystup
010E D220            207            setb    Stav
0110 0150            208            jmp     Reset
                     209            ;mod 1
0112 302005          210    Mode1:  jnb     Stav,LongPip
0115 319A            211            acall   Pip3xShort
0117 02011C          212            jmp     ShortPip
011A 31A9            213    LongPip:        acall   Pip1xLong
011C B220            214    ShortPip:       cpl     Stav
011E A220            215            mov     c,Stav
0120 9200            216            mov     Vystup,c
0122 0150            217            jmp     Reset
                     218            ;bec!
0124 0169            219    DalsiProsim:    jmp     Smycka 
                     220            ;zpozdovaci smycka
0126 D200            221    Delay:  setb    rs1
****----------------------------------------^
****ERROR #2: Undefined symbol
0128 A800            222            mov     R0,b
****-------------------------------------------^
****ERROR #2: Undefined symbol
012A F9              223    Delay2: mov     R1,a
012B 7AFF            224    Delay1: mov     R2,#255
012D DAFE            225            djnz    R2,$
012F D9FA            226            djnz    R1,Delay1
0131 D8F7            227            djnz    R0,Delay2
0133 750001          228            mov     b,#1
****----------------------------------------^
****ERROR #2: Undefined symbol
0136 C200            229            clr     rs1
****----------------------------------------^
****ERROR #2: Undefined symbol
0138 22              230            ret
                     231            ;cteni maticovych tlacitek do a
                     232            ;(detekuji se pouze zmeny oproti minulemu cteni, jinak a = 0)   
0139 7A00            233    CtiButony:      mov     R2,#0
013B 7900            234            mov     R1,#0
013D 7FFE            235            mov     R7,#11111110b
013F 8F00            236            mov     P1,R7
****----------------------------------------^
****ERROR #2: Undefined symbol
                     237            ;2x osetreni zakmitu
0141 A800            238    PrubniJestli:   mov     R0,P1
****---------------------------------------------------^
****ERROR #2: Undefined symbol
ZAMEK                                                                                                         PAGE 6

0143 7405            239            mov     a,#5
0145 3126            240            acall   Delay
0147 E500            241            mov     a,P1
****------------------------------------------^
****ERROR #2: Undefined symbol
0149 FC              242            mov     R4,a
014A 68              243            xrl     a,R0
014B 70F4            244            jnz     PrubniJestli
014D 7405            245            mov     a,#5
014F 3126            246            acall   Delay
0151 A800            247            mov     R0,P1
****-------------------------------------------^
****ERROR #2: Undefined symbol
0153 EC              248            mov     a,R4
0154 68              249            xrl     a,R0
0155 70EA            250            jnz     PrubniJestli
0157 EC              251            mov     a,R4
                     252            ;testik, jestli je v tomhle radku neco stiskly
0158 F4              253            cpl     a
0159 5470            254            anl     a,#01110000b
015B 600A            255            jz      DalsiRadek
015D B90024          256            cjne    R1,#0,Chyba     ;nekdo zmackl 2 tlacitka zaroven
0160 23              257            rl      a
                     258            ;vyhodnoceni v kterym sloupci je to stiskly
0161 09              259    KerejSloupec:   inc     R1
0162 33              260            rlc     a
0163 50FC            261            jnc     KerejSloupec
0165 701D            262            jnz     Chyba   ;nejakej vul zmackl 2 tlacitka zaroven
                     263            ;cti dalsi radek
0167 E9              264    DalsiRadek:     mov     a,R1
0168 7004            265            jnz     UzNasel
016A EA              266            mov     a,R2
016B 2403            267            add     a,#3
016D FA              268            mov     R2,a
016E EF              269    UzNasel:        mov     a,R7
016F 23              270            rl      a
0170 300005          271            jnb     acc.4,Hotovo
****----------------------------------------^---^
****ERROR #2: Undefined symbol
****ERROR #17: Illegal bit designator
0173 FF              272            mov     R7,a
0174 F500            273            mov     P1,a
****----------------------------------------^
****ERROR #2: Undefined symbol
0176 80C9            274            jmp     PrubniJestli
                     275            ;talcitko zjisteny a stiskly jen jedno
0178 E9              276    Hotovo: mov     a,R1
0179 6009            277            jz      Chyba
017B C3              278            clr     c
017C 2A              279            add     a,R2
017D FC              280            mov     R4,a
017E 6D              281            xrl     a,R5
017F 6007            282            jz      Stejne
0181 EC              283            mov     a,R4
0182 FD              284            mov     R5,a
0183 22              285            ret
                     286            ;nekdo stiskl 2 a vic zaroven nebo nic
0184 7400            287    Chyba:  mov     a,#0
ZAMEK                                                                                                         PAGE 7

0186 FD              288            mov     R5,a
0187 22              289            ret
                     290            ;predchozi cteni stejny jako ted
0188 7400            291    Stejne: mov     a,#0
018A 22              292            ret
                     293           
                     294            ;1x kratky pipnuti
018B 755901          295    Pip1xShort:     mov     PipN,#1 ;pocet pipnuti
018E 755B0F          296            mov     PipL,#15        ;delka pipnuti
0191 755A0A          297            mov     PipD,#10        ;mezera mezi pipnutimi
0194 75584B          298            mov     PipT,#75        ;1/frekvence tonu
0197 31C7            299            acall   Pipani
0199 22              300            ret
                     301            ;3x kratky pipnuti
019A 755903          302    Pip3xShort:     mov     PipN,#3 ;pocet pipnuti
019D 755B0F          303            mov     PipL,#15        ;delka pipnuti
01A0 755A0A          304            mov     PipD,#10        ;mezera mezi pipnutimi
01A3 75584B          305            mov     PipT,#75        ;1/frekvence tonu       
01A6 31C7            306            acall   Pipani
01A8 22              307            ret
                     308            ;1x dlouhy pipnuti
01A9 755901          309    Pip1xLong:      mov     PipN,#1 ;pocet pipnuti
01AC 755B96          310            mov     PipL,#150       ;delka pipnuti
01AF 755A01          311            mov     PipD,#1 ;mezera mezi pipnutimi
01B2 75584B          312            mov     PipT,#75        ;1/frekvence tonu       
01B5 31C7            313            acall   Pipani
01B7 22              314            ret
                     315            ;3x dlouhy pipnuti
01B8 755903          316    Pip3xLong:      mov     PipN,#3 ;pocet pipnuti
01BB 755B96          317            mov     PipL,#150       ;delka pipnuti
01BE 755A14          318            mov     PipD,#20        ;mezera mezi pipnutimi
01C1 75584B          319            mov     PipT,#75        ;1/frekvence tonu       
01C4 31C7            320            acall   Pipani
01C6 22              321            ret
                     322            ;valstni generator pipani
                     323            ;PipT - 1/frekvence
                     324            ;PipN - pocet pipnuti
                     325            ;PipD - prodleva mezi pipanim
                     326            ;PipL - delka pipnuti
01C7 D200            327    Pipani: setb    rs0
****----------------------------------------^
****ERROR #2: Undefined symbol
                     328            ;pocet pipnuti
01C9 AB59            329            mov     R3,PipN
01CB                 330    PipNRun1:       ;ton + delka pipnuti
01CB A95B            331            mov     R1,PipL
01CD 7F0A            332    PipLRun1:       mov     R7,#10
01CF A858            333    PipLRun2:       mov     R0,PipT
01D1 D8FE            334            djnz    R0,$
01D3 C200            335            clr     Pipak
01D5 A858            336            mov     R0,PipT
01D7 D8FE            337            djnz    R0,$
01D9 302102          338            jnb     Pipat,Nepipej
01DC D200            339            setb    Pipak
01DE DFEF            340    Nepipej:        djnz    R7,PipLRun2
01E0 D9EB            341            djnz    R1,PipLRun1
                     342            ;delka mezery
01E2 D200            343            setb    Pipak
ZAMEK                                                                                                         PAGE 8

01E4 BB0103          344            cjne    R3,#1,PipDRun
01E7 0201F6          345            jmp     PipKonec
01EA AA5A            346    PipDRun:        mov     R2,PipD
01EC 7E0F            347    PipDRun1:       mov     R6,#15
01EE 7F00            348    PipDRun2:       mov     R7,#0
01F0 DFFE            349            djnz    R7,$
01F2 DEFA            350            djnz    R6,PipDRun2
01F4 DAF6            351            djnz    R2,PipDRun1
                     352            ;patri k poctu pipnuti
01F6 DBD3            353    PipKonec:       djnz    R3,PipNRun1
                     354            ;konec 
01F8 C200            355            clr     rs0
****----------------------------------------^
****ERROR #2: Undefined symbol
01FA 22              356            ret
                     357            ;tu je skoro vse se sbernici I2C
                     358            ;zpozdeni pro I2C
01FB 00              359    DelS:   nop
01FC 00              360            nop
01FD 22              361            ret
                     362            ;I2C start
01FE D200            363    I2CStart:       setb    SDA
0200 D200            364            setb    SCL
0202 31FB            365            acall   DelS
0204 C200            366            clr     SDA
0206 31FB            367            acall   DelS
0208 C200            368            clr     SCL
020A 31FB            369            acall   DelS
020C 22              370            ret
                     371            ;I2C stop
020D D200            372    I2CStop:        setb    SCL
020F 31FB            373            acall   DelS
0211 D200            374            setb    SDA
0213 31FB            375            acall   DelS
0215 22              376            ret
                     377            ;cteni bytu z I2C do a
0216 7808            378    I2CCti: mov     R0,#8
0218 D200            379            setb    SDA
021A 31FB            380            acall   DelS
021C D200            381    Cti1:   setb    SCL
021E 31FB            382            acall   DelS
0220 A200            383            mov     c,SDA
0222 C200            384            clr     SCL
0224 31FB            385            acall   DelS
0226 33              386            rlc     a
0227 D8F3            387            djnz    R0,Cti1
                     388            ;ACK
0229 D200            389            setb    SDA
022B 31FB            390            acall   DelS
022D D200            391            setb    SCL
022F 31FB            392            acall   DelS
0231 C200            393            clr     SCL
0233 31FB            394            acall   DelS
0235 C200            395            clr     SDA
0237 31FB            396            acall   DelS
0239 22              397            ret
                     398            ;posilani bytu z a na sbernici I2C
023A 7808            399    I2CPosilej:     mov     R0,#8
ZAMEK                                                                                                         PAGE 9

023C 33              400    Posilej1:       rlc     a
023D 9200            401            mov     SDA,c
023F 31FB            402            acall   DelS
0241 D200            403            setb    SCL
0243 31FB            404            acall   DelS
0245 C200            405            clr     SCL
0247 31FB            406            acall   DelS
0249 D8F1            407            djnz    R0,Posilej1
                     408            ;do c nacti ACK
024B D200            409            setb    SDA
024D 31FB            410            acall   DelS
024F D200            411            setb    SCL
0251 31FB            412            acall   DelS
0253 A200            413            mov     c,SDA
0255 C200            414            clr     SCL
0257 31FB            415            acall   DelS
0259 C200            416            clr     SDA
025B 22              417            ret
                     418            ;ukladani cisel do pameti
                     419            ;cteni klavesnice
025C 3139            420    ZapisZnakuu:    acall   CtiButony
025E 202207          421            jb      PrvniStisk,JesteNeSave
0261 0B              422            inc     R3
0262 BB5003          423            cjne    R3,#AutoResetTime,JesteNeSave
0265 020290          424            jmp     SaveNovyKod
0268 60F2            425    JesteNeSave:    jz      ZapisZnakuu
                     426            ;plna pamet?
026A BEFE03          427            cjne    R6,#254,NePlnaEEP
026D 020290          428            jmp     SaveNovyKod
                     429            ;prekodovat a prevest na ASCII
0270 9002D4          430    NePlnaEEP:      mov     dptr,#Dekoder
0273 93              431            movc    a,@a+dptr
0274 2430            432            add     a,#48
0276 C000            433            push    acc
****----------------------------------------^
****ERROR #2: Undefined symbol
0278 7B00            434            mov     R3,#0
027A 318B            435            acall   Pip1xShort
027C C222            436            clr     PrvniStisk
027E 0E              437            inc     R6
                     438            ;ulozit stiskle tlacitko do pameti
027F 31FE            439            acall   I2CStart
0281 74A0            440            mov     a,#10100000b
0283 513A            441            acall   I2CPosilej
0285 EE              442            mov     a,R6
0286 513A            443            acall   I2CPosilej
0288 D000            444            pop     acc
****----------------------------------------^
****ERROR #2: Undefined symbol
028A 513A            445            acall   I2CPosilej
028C 510D            446            acall   I2CStop
028E 80CC            447            jmp     ZapisZnakuu
                     448            ;zapis zaverecneho znaku (#255) do pameti
0290 0E              449    SaveNovyKod:    inc     R6
0291 31FE            450            acall   I2CStart
0293 74A0            451            mov     a,#10100000b
0295 513A            452            acall   I2CPosilej
0297 EE              453            mov     a,R6
ZAMEK                                                                                                         PAGE 10

0298 513A            454            acall   I2CPosilej
029A 74FF            455            mov     a,#255
029C 513A            456            acall   I2CPosilej
029E 510D            457            acall   I2CStop
02A0 740A            458            mov     a,#10
02A2 750014          459            mov     b,#20
****----------------------------------------^
****ERROR #2: Undefined symbol
02A5 3126            460            acall   Delay
02A7 319A            461            acall   Pip3xShort
02A9 0145            462            jmp     EEPROMJeTest
                     463            ;zapis uvodniho znaku (#100)
02AB 31FE            464    ZapisUvodniZ:   acall   I2CStart
02AD 74A0            465            mov     a,#10100000b
02AF 513A            466            acall   I2CPosilej
02B1 7400            467            mov     a,#00000000b
02B3 513A            468            acall   I2CPosilej
02B5 7464            469            mov     a,#100
02B7 513A            470            acall   I2CPosilej
02B9 510D            471            acall   I2CStop
02BB 22              472            ret
                     473            ;"smaz" (zapis #255) uvodni znak
02BC 31FE            474    SmazUvodniZ:    acall   I2CStart
02BE 74A0            475            mov     a,#10100000b
02C0 513A            476            acall   I2CPosilej
02C2 7400            477            mov     a,#00000000b
02C4 513A            478            acall   I2CPosilej
02C6 74FF            479            mov     a,#255
02C8 513A            480            acall   I2CPosilej
02CA 510D            481            acall   I2CStop
02CC 22              482            ret
                     483                           
                     484            ;tu se pise vlastni kod (max. 255 cifer :-), pouzitelne jsou cisla 0-9, # a *
02CD 35353538        485    Kod:    db      '555823'
02D1 3233       
                     486            ; 255 zakoncuje kod - nemenit !!
02D3 FF              487            db      255
                     488            ;sloupce se ctou v poradi P1.6, P1.5 a P1.4
                     489            ;radky se ctou v poradi P1.0, P1.1, P1.2 a P1.3
                     490            ;tady uvadim priklad jak to nastavit a zapojit
                     491            ;
                     492            ;         P1.4  P1.5  P1.6     
                     493            ;           |     |     |         
                     494            ;   P1.3 -- 7 --- 8 --- 9
                     495            ;           |     |     |
                     496            ;   P1.2 -- 4 --- 5 --- 6
                     497            ;           |     |     |
                     498            ;   P1.1 -- 1 --- 2 --- 3
                     499            ;           |     |     |
                     500            ;   P1.0 -- * --- 0 --- #
                     501            ;
02D4 FA              502    Dekoder:        db      250     ;tohle nemenit
                     503            ;takze jsem si zvolil nejake pripojeni P1.0 az P1.6 ke klavesnici (nakres nahore)
                     504            ;tak jak jsem to zapojil to tedy znamena,
                     505            ;ze se cte po radcich zprava doleva a od spodu nahoru
                     506            ;takze uz jen pisu cisla tak je ctu porade, cili:
02D5 F300FA03        507            db      243,0,250,3,2,1,6,5,4,9,8,7
02D9 02010605   
ZAMEK                                                                                                         PAGE 11

02DD 04090807   
                     508            ;# = 243, * = 250 a tyto 2 znaky lze v kodu pouzivat take
                     509            ;ps.: takhle jsem to zapojil jen proto, aby se mi dobre kreslilo schema :-)
                     510            ;ale muze to byt libovolne prehazene
                     511                   
                     512            end     

VERSION 1.2h ASSEMBLY COMPLETE, 36 ERRORS FOUND

ERROR SUMMARY:
Line #1, ERROR #8: Illegal assembly line
Line #18, ERROR #17: Illegal bit designator
Line #19, ERROR #17: Illegal bit designator
Line #21, ERROR #17: Illegal bit designator
Line #22, ERROR #17: Illegal bit designator
Line #23, ERROR #17: Illegal bit designator
Line #24, ERROR #17: Illegal bit designator
Line #34, ERROR #2: Undefined symbol
Line #35, ERROR #2: Undefined symbol
Line #38, ERROR #2: Undefined symbol
Line #44, ERROR #2: Undefined symbol
Line #45, ERROR #2: Undefined symbol
Line #47, ERROR #2: Undefined symbol
Line #74, ERROR #2: Undefined symbol
Line #88, ERROR #2: Undefined symbol
Line #165, ERROR #2: Undefined symbol
Line #171, ERROR #2: Undefined symbol
Line #188, ERROR #2: Undefined symbol
Line #197, ERROR #2: Undefined symbol
Line #203, ERROR #2: Undefined symbol
Line #221, ERROR #2: Undefined symbol
Line #222, ERROR #2: Undefined symbol
Line #228, ERROR #2: Undefined symbol
Line #229, ERROR #2: Undefined symbol
Line #236, ERROR #2: Undefined symbol
Line #238, ERROR #2: Undefined symbol
Line #241, ERROR #2: Undefined symbol
Line #247, ERROR #2: Undefined symbol
Line #271, ERROR #2: Undefined symbol
Line #271, ERROR #17: Illegal bit designator
Line #273, ERROR #2: Undefined symbol
Line #327, ERROR #2: Undefined symbol
Line #355, ERROR #2: Undefined symbol
Line #433, ERROR #2: Undefined symbol
Line #444, ERROR #2: Undefined symbol
Line #459, ERROR #2: Undefined symbol


neviem ako ďalej. Prosim o pomoc. Vďaka

Napsal: 24 úno 2009, 00:01
od caven
nevšiml jsem si, možná jsem to přehlídnl, ale nemáš tam inclued ted nevím jak se to píše :D prostě tam nemáš vložený datový soubor pro ten procesor, proto ten překladač nazná port atd...

Napsal: 24 úno 2009, 09:23
od Atlan
...ze by toto :D $modxx51

Napsal: 24 úno 2009, 15:15
od Ondrey
Atlan píše:...ze by toto :D $modxx51
ee tym to neni.

Napsal: 24 úno 2009, 15:38
od nekmil
No to je ovšem divné. Pokud jsem vzal zdrojový kód z té stránky a přeložil ho v ASM51 tak zahlásil "ASSEMBLY COMPLETE, 0 ERRORS FOUND".
Dělal jsi v tom původním programu nějaké změny ?




P.S. kdyby se použil modernější Attiny2313 tak není třeba krystal ani ta eeprom

Napsal: 24 úno 2009, 15:39
od caven
a proč to chceš přeložit když tam je i rovnou přeložený zdroják ?? Si tam něco upravil a proto ti to nejde :D pokud je tam diakritiva

Napsal: 24 úno 2009, 18:20
od Ondrey
caven píše:a proč to chceš přeložit když tam je i rovnou přeložený zdroják ?? Si tam něco upravil a proto ti to nejde :D pokud je tam diakritiva

no v tom je ta sranda ze mne to ma naprogramovat profak v skole, pretoze ja programator nemam a on mi tvrdil ze si to musi skompilovat svojim kompilatorom, ktory pracuje s tym jeho slavnym programatorom. Nemate niekto programator a nebol by to ochotny nahrat do toho svaba? Prikladam posledny log bez chyb:

Kód: Vybrat vše


ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 1





       MCS-51 Family Macro Assembler   A S E M - 5 1   V 1.3
       =====================================================



   Source File:   C:\asem51\zamek.asm
   Object File:   C:\asem51\zamek.hex
   List File:   C:\asem51\zamek.lst



 Line  I  Addr  Code            Source

    1:            ;compiler: asem51
    2:            $NOBUILTIN            ;nečítaj preddefinované symboly (SFR)
    3:            $NOMOD51              ;vypnúť  standard 8051 SFR symbols
    4:            $TITLE(Kodovy zamok - Ondrej Provaznik)      ;nastav záhlavie stránky
    5:            $NOLIST               ;listing off
  103:      N    20      bseg    at 20h
  104:       20   N    01   Stav:   dbit   1
  105:       21   N    01   Pipat:   dbit   1
  106:       22   N    01   PrvniStisk:   dbit   1
  107:       23   N    01   KodzEEPROM:   dbit   1
  108:       24   N    01   NovyKod:   dbit   1
  109:
  110:      N    30      dseg   at 30h
  111:       30   N    28   Zasobnik:   ds   40
  112:       58   N    01   PipT:   ds   1
  113:       59   N    01   PipN:   ds   1
  114:       5A   N    01   PipD:   ds   1
  115:       5B   N    01   PipL:   ds   1
  116:               ;definice vstupu/vystupu
  117:      B      00B0   SCL   equ   P3.0   ;hodiny EEPROM
  118:      B      00B1   SDA   equ   P3.1   ;data EEPROM
  119:               ;adresovaci vyvody A0 - A2 musi byt uzemneny
  120:      B      00B5   Pipak   equ   P3.5   ;vystup pro piezo a LED
  121:      B      00B4   SaveKod   equ   P3.4   ;vkladani noveho kodu (pri log.0)
  122:      B      00B7   Vystup   equ   P3.7   ;vystup (aktivni - log.0)
  123:      B      00B3   ModeSelect   equ   P3.3   ;volba modu
  124:               ;0 - kodem zapni, kodem vypni
  125:               ;1 - Kodem zapni, vypne samo po nastavene dobe
  126:      N      000A   ZpozdeneOff   equ   10   ;zpozdene vypnuti (od 4!!! do 255 vterin)
  127:      N      0037   Vterina   equ   55   ;timto se nastavuje delka 1 vteriny
  128:      N      0050   AutoResetTime   equ   80   ;doba za kterou se od posledniho stisku
  129:                     ;resetuje kod, 25=asi 1 vterina
  130:               ;zacatek kodu
  131:               cseg
  132:               ;pocatecni nastaveni nekterych neuzitecnych promennych
  133:      N      0000      org   0
  134:     0000   75 90 FF   Init:   mov   P1,#255
  135:     0003   75 B0 FF      mov   P3,#255
  136:     0006   7D 00         mov   R5,#0
  137:     0008   7E 00         mov   R6,#0
  138:     000A   75 81 30      mov   sp,#Zasobnik
  139:     000D   D2 20         setb   Stav
  140:     000F   D2 21         setb   Pipat

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 2



 Line  I  Addr  Code            Source

  141:     0011   C2 23         clr   KodzEEPROM
  142:     0013   D2 22         setb   PrvniStisk
  143:     0015   C2 24         clr   NovyKod
  144:     0017   C2 D3         clr   rs0
  145:     0019   C2 D4         clr   rs1
  146:     001B   74 00         mov   a,#0
  147:     001D   75 F0 01      mov   b,#1
  148:     0020   31 26         acall   Delay
  149:               ;zacatek programu
  150:               ;je pripojena EEPROM ?
  151:     0022   31 FE         acall   I2CStart
  152:     0024   74 A0         mov   a,#10100000b
  153:     0026   51 3A         acall   I2CPosilej
  154:     0028   40 1D         jc   EEPROMNeni
  155:               ;zjisti jesi v ni neco je
  156:     002A   74 00         mov   a,#00000000b
  157:     002C   51 3A         acall   I2CPosilej
  158:     002E   31 FE         acall   I2CStart
  159:     0030   74 A1         mov   a,#10100001b
  160:     0032   51 3A         acall   I2CPosilej
  161:     0034   51 16         acall   I2CCti
  162:     0036   51 0D         acall   I2CStop
  163:               ;vkladani noveho kodu?
  164:     0038   20 B4 07      jb   SaveKod,EEPROMJe
  165:               ;do EEPROM se bude vkladat kod
  166:     003B   51 BC      PodelalTo:   acall   SmazUvodniZ
  167:     003D   D2 24         setb   NovyKod
  168:     003F   02 02 5C      jmp   ZapisZnakuu
  169:               ;z EEPROM se bude cist kod
  170:     0042   B4 64 02   EEPROMJe:   cjne   a,#100,EEPROMNeni
  171:     0045   D2 23      EEPROMJeTest:   setb   KodzEEPROM
  172:               ;pamet neni pripojena
  173:     0047   74 0A      EEPROMNeni:   mov   a,#10
  174:     0049   75 F0 14      mov   b,#20
  175:     004C   31 26         acall   Delay
  176:     004E   7E 00         mov   R6,#0
  177:
  178:               ;porovnavani cisla kodu se zadanym cislem
  179:               ;reset
  180:               ;nejdriv zjisti jesi se zapisuje novy kod
  181:     0050   30 24 12   resett:   jnb   NovyKod,Neres1
  182:               ;jo zapisuje
  183:     0053   EE         mov   a,R6
  184:               ;jesi R6=0, tak to neres a skoc na Neres1
  185:     0054   60 0F         jz   Neres1
  186:               ;R6 vetsi nez 0, takze to nekdo podelal - 3x dlouze pipni
  187:     0056   74 19         mov   a,#25
  188:     0058   75 F0 32      mov   b,#50
  189:     005B   31 26         acall   Delay
  190:     005D   31 B8         acall   Pip3xLong
  191:               ;a vrat se na zacatek zadavani noveho kodu
  192:     005F   D2 22         setb   PrvniStisk
  193:     0061   7E 00         mov   R6,#0
  194:     0063   80 D6         jmp   PodelalTo
  195:               ;normalni reset
  196:     0065   7E 00      Neres1:   mov   R6,#0   ;pozice znaku v kodu

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 3



 Line  I  Addr  Code            Source

  197:     0067   7B 00         mov   R3,#0
  198:               ;smycka, kde se ctou tlacitka
  199:     0069   31 39      Smycka:   acall   CtiButony
  200:     006B   0B         inc   R3
  201:     006C   BB 50 02      cjne   R3,#AutoResetTime,DalRad1
  202:     006F   80 DF         jmp   resett
  203:     0071   60 F6      DalRad1:   jz   Smycka
  204:     0073   7B 00         mov   R3,#0
  205:     0075   31 8B         acall   Pip1xShort
  206:               ;prekodovani klavesnice
  207:     0077   90 02 D4      mov   dptr,#Dekoder
  208:     007A   93         movc   a,@a+dptr
  209:     007B   FF         mov   R7,a   ;v R7 stisknute cislo
  210:               ;nacteni R6-teho cisla
  211:               ;vyber jestli z PROM nebo EEPROM
  212:     007C   20 23 08      jb   KodzEEPROM,Pamet1
  213:               ;z PROM
  214:     007F   90 02 CD      mov   dptr,#Kod
  215:     0082   EE         mov   a,R6
  216:     0083   93         movc   a,@a+dptr
  217:     0084   02 00 9B      jmp   DeASCII
  218:               ;z EEPROM
  219:     0087   31 FE      Pamet1:   acall   I2CStart
  220:     0089   74 A0         mov   a,#10100000b
  221:     008B   51 3A         acall   I2CPosilej
  222:     008D   EE         mov   a,R6
  223:     008E   04         inc   a
  224:     008F   51 3A         acall   I2CPosilej
  225:     0091   31 FE         acall   I2CStart
  226:     0093   74 A1         mov   a,#10100001b
  227:     0095   51 3A         acall   I2CPosilej
  228:     0097   51 16         acall   I2CCti
  229:     0099   51 0D         acall   I2CStop
  230:               ;prevod z ASCII na norm. cislo
  231:     009B   C3      DeASCII:   clr   c
  232:     009C   94 30         subb   a,#48
  233:               ;srovnani
  234:     009E   6F         xrl   a,R7
  235:     009F   0E         inc   R6   ;dalsi cislo v kodu
  236:     00A0   70 AE         jnz   resett   ;kdyz nesedi, tak reset
  237:               ;uz konec?
  238:               ;vyber jestli z PROM nebo EEPROM
  239:               ;z PROM
  240:     00A2   20 23 05      jb   KodzEEPROM,Pamet2
  241:     00A5   EE         mov   a,R6
  242:     00A6   93         movc   a,@a+dptr
  243:     00A7   02 00 BE      jmp   UzKonecKodu
  244:               ;z EEPROM
  245:     00AA   31 FE      Pamet2:   acall   I2CStart
  246:     00AC   74 A0         mov   a,#10100000b
  247:     00AE   51 3A         acall   I2CPosilej
  248:     00B0   EE         mov   a,R6
  249:     00B1   04         inc   a
  250:     00B2   51 3A         acall   I2CPosilej
  251:     00B4   31 FE         acall   I2CStart
  252:     00B6   74 A1         mov   a,#10100001b

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 4



 Line  I  Addr  Code            Source

  253:     00B8   51 3A         acall   I2CPosilej
  254:     00BA   51 16         acall   I2CCti
  255:     00BC   51 0D         acall   I2CStop
  256:               ;ted to zkus
  257:     00BE   B4 FF 63   UzKonecKodu:   cjne   a,#255,DalsiProsim
  258:               ;uz to byl konec
  259:               ;prubni jestli slo o zapis noveho kodu do pameti
  260:     00C1   30 24 0D      jnb   NovyKod,Pamet3
  261:               ;zapis noveho kodu - zapis uvodniho znaku
  262:     00C4   51 AB         acall   ZapisUvodniZ
  263:               ;zpozdeni a 3x pip
  264:     00C6   74 1E         mov   a,#30
  265:     00C8   75 F0 19      mov   b,#25
  266:     00CB   31 26         acall   Delay
  267:     00CD   31 9A         acall   Pip3xShort
  268:     00CF   80 FE         jmp   $   ;zacykleni
  269:               ;sepni / vypni vystup
  270:     00D1   74 1E      Pamet3:   mov   a,#30
  271:     00D3   75 F0 19      mov   b,#25
  272:     00D6   31 26         acall   Delay
  273:               ;konec zpozdeni
  274:               ;mod 1 nebo 2 ?
  275:     00D8   20 B3 37      jb   ModeSelect,Mode1
  276:               ;mod 2
  277:               ;zapnuti
  278:     00DB   31 9A         acall   Pip3xShort
  279:     00DD   C2 B7         clr   Vystup
  280:     00DF   C2 20         clr   Stav
  281:               ;vypnuti
  282:     00E1   74 0A         mov   a,#ZpozdeneOff
  283:     00E3   C3         clr   c
  284:     00E4   94 04         subb   a,#4
  285:     00E6   F8         mov   R0,a
  286:               ;tu cekej ZpozdeneOff - 4 vterin a blikej LEDkou
  287:     00E7   74 37      Mode2Loop1:   mov   a,#Vterina
  288:     00E9   75 F0 23      mov   b,#35
  289:     00EC   31 26         acall   Delay
  290:     00EE   C2 21         clr   Pipat
  291:     00F0   31 8B         acall   Pip1xShort
  292:     00F2   D2 21         setb   Pipat
  293:     00F4   D8 F1         djnz   R0,Mode2Loop1
  294:               ;tu cekej 3 vteriny a jeste pipej
  295:     00F6   78 03         mov   R0,#3
  296:     00F8   74 37      Mode2Loop2:   mov   a,#Vterina
  297:     00FA   75 F0 23      mov   b,#35
  298:     00FD   31 26         acall   Delay
  299:     00FF   31 8B         acall   Pip1xShort   ;1x pipni
  300:     0101   D8 F5         djnz   R0,Mode2Loop2
  301:               ;tu uz pipni dlouze a deaktivuj vystup
  302:     0103   74 37         mov   a,#Vterina
  303:     0105   75 F0 1E      mov   b,#30
  304:     0108   31 26         acall   Delay
  305:     010A   31 A9         acall   Pip1xLong   ;1x dlouze pipni
  306:     010C   D2 B7         setb   Vystup
  307:     010E   D2 20         setb   Stav
  308:     0110   01 50         jmp   resett

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 5



 Line  I  Addr  Code            Source

  309:               ;mod 1
  310:     0112   30 20 05   Mode1:   jnb   Stav,LongPip
  311:     0115   31 9A         acall   Pip3xShort
  312:     0117   02 01 1C      jmp   ShortPip
  313:     011A   31 A9      LongPip:   acall   Pip1xLong
  314:     011C   B2 20      ShortPip:   cpl   Stav
  315:     011E   A2 20         mov   c,Stav
  316:     0120   92 B7         mov   Vystup,c
  317:     0122   01 50         jmp   resett
  318:               ;bec!
  319:     0124   01 69      DalsiProsim:   jmp   Smycka
  320:               ;zpozdovaci smycka
  321:     0126   D2 D4      Delay:   setb   rs1
  322:     0128   A8 F0         mov   R0,b
  323:     012A   F9      Delay2:   mov   R1,a
  324:     012B   7A FF      Delay1:   mov   R2,#255
  325:     012D   DA FE         djnz   R2,$
  326:     012F   D9 FA         djnz   R1,Delay1
  327:     0131   D8 F7         djnz   R0,Delay2
  328:     0133   75 F0 01      mov   b,#1
  329:     0136   C2 D4         clr   rs1
  330:     0138   22         ret
  331:               ;cteni maticovych tlacitek do a
  332:               ;(detekuji se pouze zmeny oproti minulemu cteni, jinak a = 0)
  333:     0139   7A 00      CtiButony:   mov   R2,#0
  334:     013B   79 00         mov   R1,#0
  335:     013D   7F FE         mov   R7,#11111110b
  336:     013F   8F 90         mov   P1,R7
  337:               ;2x osetreni zakmitu
  338:     0141   A8 90      PrubniJestli:   mov   R0,P1
  339:     0143   74 05         mov   a,#5
  340:     0145   31 26         acall   Delay
  341:     0147   E5 90         mov   a,P1
  342:     0149   FC         mov   R4,a
  343:     014A   68         xrl   a,R0
  344:     014B   70 F4         jnz   PrubniJestli
  345:     014D   74 05         mov   a,#5
  346:     014F   31 26         acall   Delay
  347:     0151   A8 90         mov   R0,P1
  348:     0153   EC         mov   a,R4
  349:     0154   68         xrl   a,R0
  350:     0155   70 EA         jnz   PrubniJestli
  351:     0157   EC         mov   a,R4
  352:               ;testik, jestli je v tomhle radku neco stiskly
  353:     0158   F4         cpl   a
  354:     0159   54 70         anl   a,#01110000b
  355:     015B   60 0A         jz   DalsiRadek
  356:     015D   B9 00 24      cjne   R1,#0,Chyba   ;nekdo zmackl 2 tlacitka zaroven
  357:     0160   23         rl   a
  358:               ;vyhodnoceni v kterym sloupci je to stiskly
  359:     0161   09      KerejSloupec:   inc   R1
  360:     0162   33         rlc   a
  361:     0163   50 FC         jnc   KerejSloupec
  362:     0165   70 1D         jnz   Chyba   ;nejakej vul zmackl 2 tlacitka zaroven
  363:               ;cti dalsi radek
  364:     0167   E9      DalsiRadek:   mov   a,R1

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 6



 Line  I  Addr  Code            Source

  365:     0168   70 04         jnz   UzNasel
  366:     016A   EA         mov   a,R2
  367:     016B   24 03         add   a,#3
  368:     016D   FA         mov   R2,a
  369:     016E   EF      UzNasel:   mov   a,R7
  370:     016F   23         rl   a
  371:     0170   30 E4 05      jnb   acc.4,Hotovo
  372:     0173   FF         mov   R7,a
  373:     0174   F5 90         mov   P1,a
  374:     0176   80 C9         jmp   PrubniJestli
  375:               ;talcitko zjisteny a stiskly jen jedno
  376:     0178   E9      Hotovo:   mov   a,R1
  377:     0179   60 09         jz   Chyba
  378:     017B   C3         clr   c
  379:     017C   2A         add   a,R2
  380:     017D   FC         mov   R4,a
  381:     017E   6D         xrl   a,R5
  382:     017F   60 07         jz   Stejne
  383:     0181   EC         mov   a,R4
  384:     0182   FD         mov   R5,a
  385:     0183   22         ret
  386:               ;nekdo stiskl 2 a vic zaroven nebo nic
  387:     0184   74 00      Chyba:   mov   a,#0
  388:     0186   FD         mov   R5,a
  389:     0187   22         ret
  390:               ;predchozi cteni stejny jako ted
  391:     0188   74 00      Stejne:   mov   a,#0
  392:     018A   22         ret
  393:
  394:               ;1x kratky pipnuti
  395:     018B   75 59 01   Pip1xShort:   mov   PipN,#1   ;pocet pipnuti
  396:     018E   75 5B 0F      mov   PipL,#15   ;delka pipnuti
  397:     0191   75 5A 0A      mov   PipD,#10   ;mezera mezi pipnutimi
  398:     0194   75 58 4B      mov   PipT,#75   ;1/frekvence tonu
  399:     0197   31 C7         acall   Pipani
  400:     0199   22         ret
  401:               ;3x kratky pipnuti
  402:     019A   75 59 03   Pip3xShort:   mov   PipN,#3   ;pocet pipnuti
  403:     019D   75 5B 0F      mov   PipL,#15   ;delka pipnuti
  404:     01A0   75 5A 0A      mov   PipD,#10   ;mezera mezi pipnutimi
  405:     01A3   75 58 4B      mov   PipT,#75   ;1/frekvence tonu
  406:     01A6   31 C7         acall   Pipani
  407:     01A8   22         ret
  408:               ;1x dlouhy pipnuti
  409:     01A9   75 59 01   Pip1xLong:   mov   PipN,#1   ;pocet pipnuti
  410:     01AC   75 5B 96      mov   PipL,#150   ;delka pipnuti
  411:     01AF   75 5A 01      mov   PipD,#1   ;mezera mezi pipnutimi
  412:     01B2   75 58 4B      mov   PipT,#75   ;1/frekvence tonu
  413:     01B5   31 C7         acall   Pipani
  414:     01B7   22         ret
  415:               ;3x dlouhy pipnuti
  416:     01B8   75 59 03   Pip3xLong:   mov   PipN,#3   ;pocet pipnuti
  417:     01BB   75 5B 96      mov   PipL,#150   ;delka pipnuti
  418:     01BE   75 5A 14      mov   PipD,#20   ;mezera mezi pipnutimi
  419:     01C1   75 58 4B      mov   PipT,#75   ;1/frekvence tonu
  420:     01C4   31 C7         acall   Pipani

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 7



 Line  I  Addr  Code            Source

  421:     01C6   22         ret
  422:               ;valstni generator pipani
  423:               ;PipT - 1/frekvence
  424:               ;PipN - pocet pipnuti
  425:               ;PipD - prodleva mezi pipanim
  426:               ;PipL - delka pipnuti
  427:     01C7   D2 D3      Pipani:   setb   rs0
  428:               ;pocet pipnuti
  429:     01C9   AB 59         mov   R3,PipN
  430:     01CB         PipNRun1:   ;ton + delka pipnuti
  431:     01CB   A9 5B         mov   R1,PipL
  432:     01CD   7F 0A      PipLRun1:   mov   R7,#10
  433:     01CF   A8 58      PipLRun2:   mov   R0,PipT
  434:     01D1   D8 FE         djnz   R0,$
  435:     01D3   C2 B5         clr   Pipak
  436:     01D5   A8 58         mov   R0,PipT
  437:     01D7   D8 FE         djnz   R0,$
  438:     01D9   30 21 02      jnb   Pipat,Nepipej
  439:     01DC   D2 B5         setb   Pipak
  440:     01DE   DF EF      Nepipej:   djnz   R7,PipLRun2
  441:     01E0   D9 EB         djnz   R1,PipLRun1
  442:               ;delka mezery
  443:     01E2   D2 B5         setb   Pipak
  444:     01E4   BB 01 03      cjne   R3,#1,PipDRun
  445:     01E7   02 01 F6      jmp   PipKonec
  446:     01EA   AA 5A      PipDRun:   mov   R2,PipD
  447:     01EC   7E 0F      PipDRun1:    mov   R6,#15
  448:     01EE   7F 00      PipDRun2:   mov   R7,#0
  449:     01F0   DF FE         djnz   R7,$
  450:     01F2   DE FA         djnz   R6,PipDRun2
  451:     01F4   DA F6         djnz   R2,PipDRun1
  452:               ;patri k poctu pipnuti
  453:     01F6   DB D3      PipKonec:   djnz   R3,PipNRun1
  454:               ;konec
  455:     01F8   C2 D3         clr   rs0
  456:     01FA   22         ret
  457:               ;tu je skoro vse se sbernici I2C
  458:               ;zpozdeni pro I2C
  459:     01FB   00      DelS:   nop
  460:     01FC   00         nop
  461:     01FD   22         ret
  462:               ;I2C start
  463:     01FE   D2 B1      I2CStart:   setb   SDA
  464:     0200   D2 B0         setb   SCL
  465:     0202   31 FB         acall   DelS
  466:     0204   C2 B1         clr   SDA
  467:     0206   31 FB         acall   DelS
  468:     0208   C2 B0         clr   SCL
  469:     020A   31 FB         acall   DelS
  470:     020C   22         ret
  471:               ;I2C stop
  472:     020D   D2 B0      I2CStop:   setb   SCL
  473:     020F   31 FB         acall   DelS
  474:     0211   D2 B1         setb   SDA
  475:     0213   31 FB         acall   DelS
  476:     0215   22         ret

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 8



 Line  I  Addr  Code            Source

  477:               ;cteni bytu z I2C do a
  478:     0216   78 08      I2CCti:   mov   R0,#8
  479:     0218   D2 B1         setb   SDA
  480:     021A   31 FB         acall   DelS
  481:     021C   D2 B0      Cti1:   setb   SCL
  482:     021E   31 FB         acall   DelS
  483:     0220   A2 B1         mov   c,SDA
  484:     0222   C2 B0         clr   SCL
  485:     0224   31 FB         acall   DelS
  486:     0226   33         rlc   a
  487:     0227   D8 F3         djnz   R0,Cti1
  488:               ;ACK
  489:     0229   D2 B1         setb   SDA
  490:     022B   31 FB         acall   DelS
  491:     022D   D2 B0         setb   SCL
  492:     022F   31 FB         acall   DelS
  493:     0231   C2 B0         clr   SCL
  494:     0233   31 FB         acall   DelS
  495:     0235   C2 B1         clr   SDA
  496:     0237   31 FB         acall   DelS
  497:     0239   22         ret
  498:               ;posilani bytu z a na sbernici I2C
  499:     023A   78 08      I2CPosilej:   mov   R0,#8
  500:     023C   33      Posilej1:   rlc   a
  501:     023D   92 B1         mov   SDA,c
  502:     023F   31 FB         acall   DelS
  503:     0241   D2 B0         setb   SCL
  504:     0243   31 FB         acall   DelS
  505:     0245   C2 B0         clr   SCL
  506:     0247   31 FB         acall   DelS
  507:     0249   D8 F1         djnz   R0,Posilej1
  508:               ;do c nacti ACK
  509:     024B   D2 B1         setb   SDA
  510:     024D   31 FB         acall   DelS
  511:     024F   D2 B0         setb   SCL
  512:     0251   31 FB         acall   DelS
  513:     0253   A2 B1         mov   c,SDA
  514:     0255   C2 B0         clr   SCL
  515:     0257   31 FB         acall   DelS
  516:     0259   C2 B1         clr   SDA
  517:     025B   22         ret
  518:               ;ukladani cisel do pameti
  519:               ;cteni klavesnice
  520:     025C   31 39      ZapisZnakuu:   acall   CtiButony
  521:     025E   20 22 07      jb   PrvniStisk,JesteNeSave
  522:     0261   0B         inc   R3
  523:     0262   BB 50 03      cjne   R3,#AutoResetTime,JesteNeSave
  524:     0265   02 02 90      jmp   SaveNovyKod
  525:     0268   60 F2      JesteNeSave:   jz   ZapisZnakuu
  526:               ;plna pamet?
  527:     026A   BE FE 03      cjne   R6,#254,NePlnaEEP
  528:     026D   02 02 90      jmp   SaveNovyKod
  529:               ;prekodovat a prevest na ASCII
  530:     0270   90 02 D4   NePlnaEEP:   mov   dptr,#Dekoder
  531:     0273   93         movc   a,@a+dptr
  532:     0274   24 30         add   a,#48

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                          PAGE 9



 Line  I  Addr  Code            Source

  533:     0276   C0 E0         push   acc
  534:     0278   7B 00         mov   R3,#0
  535:     027A   31 8B         acall   Pip1xShort
  536:     027C   C2 22         clr   PrvniStisk
  537:     027E   0E         inc   R6
  538:               ;ulozit stiskle tlacitko do pameti
  539:     027F   31 FE         acall   I2CStart
  540:     0281   74 A0         mov   a,#10100000b
  541:     0283   51 3A         acall   I2CPosilej
  542:     0285   EE         mov   a,R6
  543:     0286   51 3A         acall   I2CPosilej
  544:     0288   D0 E0         pop   acc
  545:     028A   51 3A         acall   I2CPosilej
  546:     028C   51 0D         acall   I2CStop
  547:     028E   80 CC         jmp   ZapisZnakuu
  548:               ;zapis zaverecneho znaku (#255) do pameti
  549:     0290   0E      SaveNovyKod:   inc   R6
  550:     0291   31 FE         acall   I2CStart
  551:     0293   74 A0         mov   a,#10100000b
  552:     0295   51 3A         acall   I2CPosilej
  553:     0297   EE         mov   a,R6
  554:     0298   51 3A         acall   I2CPosilej
  555:     029A   74 FF         mov   a,#255
  556:     029C   51 3A         acall   I2CPosilej
  557:     029E   51 0D         acall   I2CStop
  558:     02A0   74 0A         mov   a,#10
  559:     02A2   75 F0 14      mov   b,#20
  560:     02A5   31 26         acall   Delay
  561:     02A7   31 9A         acall   Pip3xShort
  562:     02A9   01 45         jmp   EEPROMJeTest
  563:               ;zapis uvodniho znaku (#100)
  564:     02AB   31 FE      ZapisUvodniZ:   acall   I2CStart
  565:     02AD   74 A0         mov   a,#10100000b
  566:     02AF   51 3A         acall   I2CPosilej
  567:     02B1   74 00         mov   a,#00000000b
  568:     02B3   51 3A         acall   I2CPosilej
  569:     02B5   74 64         mov   a,#100
  570:     02B7   51 3A         acall   I2CPosilej
  571:     02B9   51 0D         acall   I2CStop
  572:     02BB   22         ret
  573:               ;"smaz" (zapis #255) uvodni znak
  574:     02BC   31 FE      SmazUvodniZ:   acall   I2CStart
  575:     02BE   74 A0         mov   a,#10100000b
  576:     02C0   51 3A         acall   I2CPosilej
  577:     02C2   74 00         mov   a,#00000000b
  578:     02C4   51 3A         acall   I2CPosilej
  579:     02C6   74 FF         mov   a,#255
  580:     02C8   51 3A         acall   I2CPosilej
  581:     02CA   51 0D         acall   I2CStop
  582:     02CC   22         ret
  583:
  584:               ;tu se pise vlastni kod (max. 255 cifer :-), pouzitelne jsou cisla 0-9, # a *
  585:     02CD   35 35 35 38   Kod:   db   '555823'
     02D1   32 33
  586:               ; 255 zakoncuje kod - nemenit !!
  587:     02D3   FF         db   255

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                         PAGE 10



 Line  I  Addr  Code            Source

  588:               ;sloupce se ctou v poradi P1.6, P1.5 a P1.4
  589:               ;radky se ctou v poradi P1.0, P1.1, P1.2 a P1.3
  590:               ;tady uvadim priklad jak to nastavit a zapojit
  591:               ;
  592:               ;         P1.4  P1.5  P1.6
  593:               ;           |     |     |
  594:               ;   P1.3 -- 7 --- 8 --- 9
  595:               ;           |     |     |
  596:               ;   P1.2 -- 4 --- 5 --- 6
  597:               ;           |     |     |
  598:               ;   P1.1 -- 1 --- 2 --- 3
  599:               ;           |     |     |
  600:               ;   P1.0 -- * --- 0 --- #
  601:               ;
  602:     02D4   FA      Dekoder:   db   250   ;tohle nemenit
  603:               ;takze jsem si zvolil nejake pripojeni P1.0 az P1.6 ke klavesnici (nakres nahore)
  604:               ;tak jak jsem to zapojil to tedy znamena,
  605:               ;ze se cte po radcich zprava doleva a od spodu nahoru
  606:               ;takze uz jen pisu cisla tak je ctu porade, cili:
  607:     02D5   F3 00 FA 03      db   243,0,250,3,2,1,6,5,4,9,8,7
     02D9   02 01 06 05
     02DD   04 09 08 07
  608:               ;# = 243, * = 250 a tyto 2 znaky lze v kodu pouzivat take
  609:               ;ps.: takhle jsem to zapojil jen proto, aby se mi dobre kreslilo schema :-)
  610:               ;ale muze to byt libovolne prehazene
  611:
  612:               end





                     register banks used:  ---

                     no errors




ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                         PAGE 11





          L I S T   O F   S Y M B O L S
          =============================


SYMBOL              TYPE     VALUE   LINE
------------------------------------------------------------
AC              BIT         D6     70
ACC              DATA         E0     27
AIN0              BIT         90     38
AIN1              BIT         91     39
AUTORESETTIME           NUMBER    0050    128
B              DATA         F0     28
CHARTIME           NUMBER    0102    101
CHYBA              CODE       0184    387
CTI1              CODE       021C    481
CTIBUTONY           CODE       0139    333
CY              BIT         D7     71
DALRAD1              CODE       0071    203
DALSIPROSIM           CODE       0124    319
DALSIRADEK           CODE       0167    364
DEASCII              CODE       009B    231
DEKODER              CODE       02D4    602
DELAY              CODE       0126    321
DELAY1              CODE       012B    324
DELAY2              CODE       012A    323
DELS              CODE       01FB    459
DPH              DATA         83     12
DPL              DATA         82     11
EA              BIT         AF     53
EEPROMJE           CODE       0042    170
EEPROMJETEST           CODE       0045    171
EEPROMNENI           CODE       0047    173
ES              BIT         AC     52
ET0              BIT         A9     49
ET1              BIT         AB     51
EX0              BIT         A8     48
EX1              BIT         AA     50
EXTI0              CODE       0003     74
EXTI1              CODE       0013     76
F0              BIT         D5     69
HOTOVO              CODE       0178    376
I2CCTI              CODE       0216    478
I2CPOSILEJ           CODE       023A    499
I2CSTART           CODE       01FE    463
I2CSTOP              CODE       020D    472
IE              DATA         A8     23
IE0              BIT         89     31
IE1              BIT         8B     33
INIT              CODE       0000    134
INT0              BIT         B2     56
INT1              BIT         B3     57
INTEL8051           NUMBER    0000     96
IP              DATA         B8     25
IT0              BIT         88     30
IT1              BIT         8A     32
JESTENESAVE           CODE       0268    525

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                         PAGE 12



SYMBOL              TYPE     VALUE   LINE
------------------------------------------------------------
KEREJSLOUPEC           CODE       0161    359
KOD              CODE       02CD    585
KODZEEPROM           BIT         23    107
LONGPIP              CODE       011A    313
MODE1              CODE       0112    310
MODE2LOOP1           CODE       00E7    287
MODE2LOOP2           CODE       00F8    296
MODESELECT           NUMBER    00B3    123
NEPIPEJ              CODE       01DE    440
NEPLNAEEP           CODE       0270    530
NERES1              CODE       0065    196
NOVYKOD              BIT         24    108
OV              BIT         D2     66
P              BIT         D0     65
P1              DATA         90     20
P3              DATA         B0     24
PAMET1              CODE       0087    219
PAMET2              CODE       00AA    245
PAMET3              CODE       00D1    270
PCON              DATA         87     13
PIP1XLONG           CODE       01A9    409
PIP1XSHORT           CODE       018B    395
PIP3XLONG           CODE       01B8    416
PIP3XSHORT           CODE       019A    402
PIPAK              NUMBER    00B5    120
PIPANI              CODE       01C7    427
PIPAT              BIT         21    105
PIPD              DATA         5A    114
PIPDRUN              CODE       01EA    446
PIPDRUN1           CODE       01EC    447
PIPDRUN2           CODE       01EE    448
PIPKONEC           CODE       01F6    453
PIPL              DATA         5B    115
PIPLRUN1           CODE       01CD    432
PIPLRUN2           CODE       01CF    433
PIPN              DATA         59    113
PIPNRUN1           CODE       01CB    430
PIPT              DATA         58    112
PODELALTO           CODE       003B    166
POSILEJ1           CODE       023C    500
PRUBNIJESTLI           CODE       0141    338
PRVNISTISK           BIT         22    106
PS              BIT         BC     64
PSW              DATA         D0     26
PT0              BIT         B9     61
PT1              BIT         BB     63
PX0              BIT         B8     60
PX1              BIT         BA     62
RB8              BIT         9A     42
RELOAD              NUMBER    00FD     97
REN              BIT         9C     44
RESET              CODE       0000     73
RESETT              CODE       0050    181
RI              BIT         98     40
RS0              BIT         D3     67
RS1              BIT         D4     68

ASEM-51 V1.3                                         Kodovy zamok - Ondrej Provaznik                                         PAGE 13



SYMBOL              TYPE     VALUE   LINE
------------------------------------------------------------
RXD              BIT         B0     54
SAVEKOD              NUMBER    00B4    121
SAVENOVYKOD           CODE       0290    549
SBUF              DATA         99     22
SCL              NUMBER    00B0    117
SCON              DATA         98     21
SDA              NUMBER    00B1    118
SHORTPIP           CODE       011C    314
SINT              CODE       0023     78
SM0              BIT         9F     47
SM1              BIT         9E     46
SM2              BIT         9D     45
SMAZUVODNIZ           CODE       02BC    574
SMOD              NUMBER    0000     98
SMYCKA              CODE       0069    199
SP              DATA         81     10
STARTADDR           CODE       0000     84
STAV              BIT         20    104
STEJNE              CODE       0188    391
T0              BIT         B4     58
T1              BIT         B5     59
TB8              BIT         9B     43
TCON              DATA         88     14
TF0              BIT         8D     35
TF1              BIT         8F     37
TH0              DATA         8C     18
TH1              DATA         8D     19
TI              BIT         99     41
TIMEBASE           NUMBER    02CD    100
TIMER0              CODE       000B     75
TIMER1              CODE       001B     77
TL0              DATA         8A     16
TL1              DATA         8B     17
TMOD              DATA         89     15
TR0              BIT         8C     34
TR1              BIT         8E     36
TXD              BIT         B1     55
USERPROGS           CODE       8000     85
UZKONECKODU           CODE       00BE    257
UZNASEL              CODE       016E    369
VTERINA              NUMBER    0037    127
VYSTUP              NUMBER    00B7    122
ZAPISUVODNIZ           CODE       02AB    564
ZAPISZNAKUU           CODE       025C    520
ZASOBNIK           DATA         30    111
ZPOZDENEOFF           NUMBER    000A    126


dakujem :)

Napsal: 24 úno 2009, 18:23
od Ondrey
Este prikladam zo zdrojaku hlavicku, ktoru som tam pridal po rozchodeni asem-u51 na mojom PC.

Kód: Vybrat vše

$NOBUILTIN            ;nečítaj preddefinované symboly (SFR)
$NOMOD51              ;vypnúť  standard 8051 SFR symbols
$TITLE(Kodovy zamok - Ondrej Provaznik)      ;nastav záhlavie stránky
$NOLIST               ;listing off
$INCLUDE (c:\asem51\89c2051.mcu)   ;načítaj 89c2051 SFR symbol definitions
$INCLUDE(c:\asem51\boot51.inc)     ;načítaj customiz
$LIST                 ;listing on

Napsal: 24 úno 2009, 18:25
od nekmil
Další divná věc. Vetšina programátorů potřebuje soubor *.hex nebo *.bin a oba typy jsou na té stránce.

Napsal: 24 úno 2009, 21:53
od Ondrey
nekmil píše:Další divná věc. Vetšina programátorů potřebuje soubor *.hex nebo *.bin a oba typy jsou na té stránce.

pri natiahnuti .hex mu hadze errore a nejde naprogramovat

Napsal: 24 úno 2009, 21:56
od ZdenekHQ
Programátor (myšleno mašina) potřebuje bin, nebo si to musí sám převést z hex.

Napsal: 25 úno 2009, 13:16
od Ondrey
ZdenekHQ píše:Programátor (myšleno mašina) potřebuje bin, nebo si to musí sám převést z hex.
no a prave pri tom prevadzani z .hex do .bin vyhadzuje chyby

Napsal: 25 úno 2009, 16:01
od ZdenekHQ
A nepleteš si trochu přípony ?

Tohle je hex (dá se přečíst v texťáku) :

Kód: Vybrat vše

:040000000202603266
:03000B000200935D
:0100130032BA
:01001B0032B2
:100023000200480100000002002F0600000000004B
:10003300000000002F3157204D41535445522020DA
:1000430056362E303020980920990132D207C299B2
:1000530032C298C0E0C0D0C0F0D2D3D2D4E599F573
:10006300F0753700E538540F2460F8A6F00538E53D
:1000730038C3B410004002D21102007FD213758A34
:1000830000308D05C28D758CE2D0F0D0D0D0E03237
:10009300C0E0C0D0D2D3D2D4758CE2758A000537C4
:1000A300E534B53713D20E753700C21175380079B0
:1000B300607810770009D8FBD0D0D0E032C2AF12FD
:1000C300091FD297D29675D000E4C0E0C0E0229217
:1000D3000FC0E0C0F0C296A2D0B3929BC207F599BD
:1000E300003007FCC20712090AD0F0D0E0A20F309B


Bin ti neukážu, nelze jako texťák zobrazit, ale je to nudle proměnných od 0 do 255 .

Napsal: 25 úno 2009, 18:30
od Ondrey
A nepleteš si trochu přípony ?


nepletiem si pripony.

Napsal: 25 úno 2009, 18:35
od nekmil
Co to je za programátor ? (v té škole)