Часть 5. Digital Radio Transmitter for control equiрments based on Atmel microcontrollers ...

Продолжение программы…



Начало смотри:
mtaalamu.ru/blog/186.html
mtaalamu.ru/blog/199.html
mtaalamu.ru/blog/214.html

Как получилось, что программа в 1000 строк не влезла в 15000 символов — не понимаю. Извините, что комментарии на галопукском языке. Если присмотреться — все читается. Делал для себя, не для публики.

Меня это всегда устраивало. Переписывать у меня здоровья не хватит. Подойдите к делу творчески. Чужой исходник всегда лишь основа для творчества. Дерзайте! На замечания типа — это не рационально, это не красиво — я реагировать не буду Отвечать буду на вопросы алгоритма. Если возьметесь за паяльник — буду помогать реально. Вплоть до прошивки вашей атмелки на моем программаторе. Этим героям — полный респект и уважуха!!!

Готовьтесь к отладке, работе с осциллографом. Помогу. Будут опубликованы фотографии осциллограмм в контрольных точках схем. Имейте ввиду, что все зто идет на ваших глазах в реальном масштабе времени.

Будут паузы. Паяльник и компьютер-НЕСОВМЕСТИМЫ!!! Буду уходить в глубокий ЗАПАЙ. Одно знаю точно — я доведу это до реального устройства. Буду благодарен, если кто-то пойдет дальше и разработает печатные платы. Только не сейчас. Процесс отладки и макетирования только начинается. Трудности будут с приемником (ВЧ) и детектированием — дешифрация уже отлажена. Отладка была на сверхрегенеративном приемнике — как самый тяжелый случай. Собственные шумы выкомуристые.

Я долго выжидал ложные срабатывания — их НЕТ !!!

Ложных срабатываний на хаос шумов НЕ БЫЛО!

Ложных срабатываний на бродячие редкие импульсы помех НЕТ !

Ложных срабатываний на похожие на пакеты импульсы хаоса НЕТ! На приведенной версии программы передатчика — все имеющиеся реле срабатывали так как задумано УРА!

Продолжение программы. Начало смотри:
mtaalamu.ru/blog/214.html

Остались таблицы данных для кодирования пакета табличным способом.
=========================================
;
;----------------------------------------
;----------------- SUB ------------------
;----------------------------------------
TXDATA:           ;...nрorрaMMa TX           
    CALL CLR_TXBUF;...obHyLeHue byfeрa TX
;...HABEPX neрedaTb Codeрwumoe  R2;P3;P1
;"@","B7"  "R2"   "P3"   "P1"  "cc"  0D
;--------------------------------------        
;  B рer. R2 - CelekToр ynрaB.(OT P1=1/OT P3=3)
;  B рer. R5 - DAHHblE u3 P1
;  B рer. R6 - DAHHblE u3 P3
;--------------------------------------
    MOV  A,#ADR0_TX ;HAh.ADP TX-byfeрa 
    MOV  R1, A     ; ADPEC TX (50h)-------------
    MOV  A,#F_STRT ; EQU 0EFH (40h="@")
    MOV  @R1, A    ; "@" B TX byfeр M0 "@"/"!"
    INC  R1        ;+ADPEC TX (51h)-------------
;
    MOV  A,#0B7H   ;"B7"-KOMAHDA-HA3AD B byfeр M1
    MOV  @R1, A    ;"B7"-KOMAHDA-HA3AD B byfeр M1
;------------- H= R2 kod ynр.-----        
    INC  R1        ;+ADPEC TX (52h)--------------
    MOV  A, R2     ;DAHHblE u3 R2 = H       
    MOV  @R1, A    ;DAHHblE u3 R2 B TX byfeр M2
;------------- L= P3 noрT  -----        
    INC  R1        ;+ADPEC TX (53h)--------------
    MOV  A, R6     ;DAHHblE u3 R6(P3) = L       
    MOV  @R1, A    ;DAHHblE u3 R6(P3) B TX byfeр M3
;------------- D= P1 noрT  -----        
    INC  R1        ;+ADPEC TX (54h)--------------
    MOV  A, R5     ;DAHHblE u3 R5(P1) B TX byfeр M4       
    MOV  @R1, A    ;DAHHblE u3 R5(P1) B TX byfeр M4
;                  ; M4=F4.0 ... F4.7 
;----noDc4eT  CRC B SUB "TX_REPORT"------------------ 
    CALL DEL01CEK  ;3aDeрwka 0.1 cek
    CALL TX_REPORT ;neрedaTb M0,M1,M2,M3,M4,M5 B hexASC
    CALL DEL01CEK  ;3aDeрwka 0.1 cek
    CALL TX_REPORT ;neрedaTb M0,M1,M2,M3,M4,M5 B hexASC
    CALL DEL01CEK  ;3aDeрwka 0.1 cek
    CALL TX_REPORT ;neрedaTb M0,M1,M2,M3,M4,M5 B hexASC
;................BblXOD.................
    CLR    TI   ;...Cbрoc Flara TX
    RET           ;...BCE !!!  
;----------------------------------------
;
;______________________________________SUB_____
;...TunoBou AlroрuTM neрeBoda HEX ASC B HL BYTE
DECO_HL:        
    INC  R0        ;+ADPEC
    CALL DECRCRX   ;KOHTP.CYMMA HA Mx
    CALL ASCH_BYTE ; A -> TABL -> A(Hi)
    MOV  R7, A     ;BPEMEHHO B R7
    INC  R0        ;++ADPEC
    CALL DECRCRX   ;KOHTP.CYMMA HA Mx+1
    CALL ASCL_BYTE ; A -> TABL -> A(Lo)
    ORL  A, R7     ;xxxx0000 OR 0000xxxx
    RET
;__________________________________SUB___
DECRCRX:
;...KOHTP.CYMMA HA Mx
    MOV  A, @R0 ;KOD u3 RX byfeрa Mx
    MOV  B, A   ;obMeH coDeрw. рer.-рoB A B
    XRL  A, R4  ;KOHTP.CYMMA HA Mx
    MOV  R4,A   ;COXP. B R4 KOHT.CYM.
    MOV  A, B   ;obMeH coDeрw. рer.-рoB A B
    RET
;__________________________________SUB___
DLY10MKC:        
    NOP  ;...465kru
    NOP
    NOP
    RET
;
;============= t02_subs.txt ================
;        Obwue  noDnрorрaMMbl                
;
;____________________SUB____________________
;obHyLeHue o3y (B R1-KOL-BO bauT ObHyl.O3y)
CLEAR_OZU:
    MOV  @R0,#0       ;nрonucblBaeM KODOM 0h
    INC  R0           ;yBeLu4uBaeM ADPEC
    DJNZ R1,CLEAR_OZU ;AHALu3 kolu4ecTBa bauT
    RET
;obHyLeHue byfeрa RX      ObHyleHue O3y RX
CLR_RXBUF:
    MOV  R1,#LBUF_RX  ;kolu4ecTBo obHylReMblx bauT
    MOV  R0,#ADR0_RX  ;CTAPTOBblu ADPEC TXbuf
    CALL CLEAR_OZU    ;obHyLeHue O3y
    RET
;obHyLeHue byfeрa TX      ObHyleHue O3y TX
CLR_TXBUF:
    MOV  R1,#LBUF_TX  ;kolu4ecTBo obHylReMblx bauT
    MOV  R0,#ADR0_TX  ;CTAPTOBblu ADPEC TXbuf
    CALL CLEAR_OZU    ;obHyLeHue O3y
    RET
;
;______________________SUB____________________
;uHuuualu3auuR nocleDoBaTeLbHoro KAHALA RS-232
INI_RS232:     
       MOV  TMOD,#00100001B ; - PerucTр рewuMoB T/C =21h
;                 ........__ M0.0 \ рewuM .0
;  M1  M0  PewuM  .......___ M1.0 /
;  0   0     0    ......____ C/T0   0-TauMeр,1-c4eT4uk
;  0   1     1    ....._____ GATE0  0-ynр.no INT0 3anрeweHo,1-рa3рew.
;  1   0     2    ....______ M0.1 \
;  1   1     3    ..._______ M1.1 / рewuM .1
;                 ..________ C/T1   0-TauMeр,1-c4eT4uk
;                 ._________ GATE1  0-ynр.no INT1 3anрeweHo,1-рa3рew.
;
;....... 13-09-2009  reHeрaToр 465 kru .........       
;
    MOV  TH1,#0FEH;...1200 b nрu 465kru (TauMeр1 -cTaрw.bauT)
    MOV  TL1,TH1  ; (TauMeр 1 -MLaDwuu bauT)
    SETB TR1      ; nyck TauMeрa 1
;      MOV  SCON,#01010000B
;                 ........__ RI-flag nрeрbIBaHuR nрuemHuKA
; SM0 SM1 Pewum   .......___ TI-flag nрeрbIBaHuR neрedaT4uka
;  0   0    0     ......____ RB8- 9 bIu buT nрuHRTbIX DAHHbIX
;  0   1    1     ....._____ TB8- 9 bIu buT neрedaHHbIX DAHHbIX  
;  1   0    2     ....______ REN- рa3рeweH. nрuema nocledoBaTelbHbIX DAHH.
;  1   1    3     ..._______ SM2- рa3рeweH. MHOronрoueccoрHoi рaboTbI
;                 ..________ SM1
;                 ._________ SM0
;        
    MOV  SCON,#50H ;PewuM noрTa N1,8-buT
    MOV  PCON,#80H ;yDBoeHue ckoрocTu BKL.
    SETB EA        ;рa3рewuTb nрeрblBaHuR
    SETB ES        ;рa3рeweH. nрeр.RS232
    SETB REN       ;рa3рeweH. RX
    RET
;
;__________________________________SUB_______
;neрedaTb 3XO nрuHRTou nocbllku
ECHO:
    SETB EA        ;рa3рeweH. nрeрblBaHuu
    SETB ES        ;рa3рeweH. nрeрblBaHuu RS232
    MOV  ADR0_RX,#0F7H  ;...#21H ;"!"
    MOV  A,#(ADR0_RX-1);HAh.ADP ANSW-byfeрa 
    MOV  R0,A      ;ADPEC(=30h-1)
TX_B:        
    SETB TI        ;uHuuualu3uрyem TX flar
TX_ECHO:        
    INC  R0        ;
    MOV  A,@R0     ;++ADPEC(=30h/50h)
    XRL  A,#F_FIN  ;=B/K=0Dh ?  
     JZ  TX_END    ;BblXOD,EClu ODh=B/K --->
    MOV  A,@R0     ;ADPEC(=30h+)
    CALL TX_BYTE   ;nрeda4a bauTa
    JMP  TX_ECHO   ;noBToр,EClu HE ODh =B/K
TX_END:        
    MOV  A,@R0     ;++ADPEC(=30h/50h)
    CALL TX_BYTE   ;nрeda4a bauTa
TX_END1:
    JNB TI,TX_END1 ;KOHEu neрeda4u ?
    CLR TI         ;OnycTowuTb u CbрocuTb
    CLR RI         ;BCE B RS232
    RET
;
;__________________________________SUB_______
;neрeda4a рanoрTa HABEPX
TX_REPORT:
;70h 71h 72h  73h   74h   75h   76h   77h   78h   79h    7Ah   7Bh
;"!","A","2","Hр2","Lр2","Hр1","Lр1","Hр0","Lр0","Hcrc","Lcrc",0D   
    SETB EA      ;рa3рeweH. nрeрblBaHuu
    SETB ES      ;рa3рeweH. nрeрblBaHuu RS232
    MOV  R4,#0       ;CRC=0
    MOV  A,#ADR0_TX  ;HAh.ADP TX-byfeрa 
    MOV  R0,A        ;OTKYDA 50h  Mt0
    MOV  A,#ADR0_BU  ;HAh.ADP ANSW-byfeрa 
    MOV  R1,A        ;KYDA   70h  Mr0
    MOV  @R1,#F_STRT ; EQU 0EFH (40h="@")
                     ; "@" B TX byfeр M0 "@"/"!"
;
    INC  R0         ;A2h,B2h,C3h.. Mt1 
    INC  R1         ;"A","B","C"   Mr1 
    CALL BTHL_ASCHL ;neрeBod bauTa A1h B "A"u "1" 
    INC  R0         ;Hр2 Lр2       Mt2
    INC  R1         ;              Mr2
    CALL BTHL_ASCHL ;neрeBod bauTa A1h B "A"u "1" 
    INC  R0         ;Hр1 Lр1       Mt3
    INC  R1         ;              Mr3
    CALL BTHL_ASCHL ;neрeBod bauTa A1h B "A"u "1" 
    INC  R0         ;Hр0 Lр0       Mt4
    INC  R1         ;              Mr4
    CALL BTHL_ASCHL ;neрeBod bauTa A1h B "A"u "1" 
;
    INC  R0         ;Hcrc Lcrc     Mt5
    INC  R1         ;              Mr5
;----------------------------- Hi CRC ----
    MOV  A,R4      ;CRC h
    ANL  A,#0F0H   ;Hi Asc "A"     11110000
    SWAP A         ;ObMEH TETPAD A 00001111
    CALL BYTE_ASC  ;0Ah --> "A"
    MOV  @R1,A     ;"Hcrc" B RX_byf  Mr1
;----------------------------- Lo CRC ----
    MOV  A,R4      ;CRC h
    ANL  A,#0FH    ;Lo Asc "2"
    CALL BYTE_ASC  ;02h --> "2"
    INC  R1        ;"x0...xF"  
    MOV  @R1,A     ;"Lcrc" B RX_byf  Mr2
;        
    INC  R0        ;
    INC  R1        ;              
    MOV  @R1,#F_FIN; B/K=0Dh=13 
;...HenocрedcTBeHHo neрeda4a DAHHblX OTBETA
    MOV  A,#(ADR0_BU-1);HAh.ADP ANSW-byfeрa 
    MOV  R0,A      ;ADPEC(=6Fh)
    MOV  R1,#0CH   ;KOL-BO TX BYTE(12baut)
    SETB TI        ;uHuuualu3uрyem TX flar
TX_DATA:        
    INC  R0         ;
    MOV  A,@R0      ;ADPEC(=20h)
    CALL TX_BYTE    ;nрeda4a bauTa
    DJNZ R1,TX_DATA ;noBToр,EClu HE BECb nakeT
TX_DEND:
    JNB TI,TX_DEND ;KOHEu neрeda4u ?
    CLR TI         ;OnycTowuTb u CbрocuTb
    CLR RI         ;BCE B RS232
    RET
;
;____________________SUB____________________
TX_STRING:
;...neрeDaeM 3aroToBleHHble coobweHuR
;Do noRBleHuR B/K (0Dh) BKOHuE CTPOKu
    PUSH ACC   ;
    SETB TI    ;uHuuualu3uрyem TX flar
SS1:
    CLR  A         ;
    MOVC A,@A+DPTR ;GET CHARACTER
    CALL TX_BYTE   ;SEND_CHAR       
    XRL  A,#F_FIN  ;#0DH    ;B/K ?      
    JZ   SS2       ;neрexod eclu 0Dh(B/K)
    INC  DPTR      ;POINT TO NEXT CHARACTER
    JMP  SS1
SS2:
    JNB TI,SS2 ;KOHEu neрeda4u ?
    CLR TI     ;OnycTowuTb u CbрocuTb
    CLR RI     ;BCE B RS232
    POP ACC
    RET
;
;_________________________ SUB _________
;TunoBou AlroрuTm neрeBoda 
;bauTa A1h B naрy ASC "A" u "1" (HEX)
BTHL_ASCHL:        
;-------------------------- Hi 
    MOV  A,@R0    ;A2h
    ANL  A,#0F0H  ;Hi Asc "A"     11110000
    SWAP A        ;ObMEH TETPAD A 00001111
    CALL BYTE_ASC ;0Ah --> "A"
    MOV  @R1,A    ;"A" B RX_byf  Mr1
    CALL CRC_ASC  ;KOHTP.CYMMA
;-------------------------- Lo  
    MOV  A,@R0    ;A2h
    ANL  A,#0FH   ;Lo Asc "2"
    CALL BYTE_ASC ;02h --> "2"
    INC  R1       ;"x0...xF"    
    MOV  @R1,A    ;"2" B RX_byf  Mr2
    CALL CRC_ASC  ;KOHTP.CYMMA
    RET
;
;__________________________________SUB___
;...noDc4eT KOHTP.CYMMbl no uckl.ulu 
;...no KODAM cuMBoloB(ASC) B byfeрe TX
CRC_ASC:         ;KOHTP.CYMMA HA TX ASC
    XRL A,R4 ;KOHTP.CYMMA HA Mx
    MOV R4,A ;COXP. B R4 KOHT.CYM.
    RET
;
;____________________SUB____________________
;...TunoBou AlroрuTM neрeDa4u 1-ro bauTa
TX_BYTE:
    JNB TI,TX_BYTE ;wDeM 1-nрu3Hak okoH.neрeDa4u
    CLR TI         ;cbрoc nрu3Haka okoH.neрeDa4u
    MOV SBUF,A     ;3arрy3ka HoBoro bauTa B TX
    RET            ;
;
;-------------------------------------
;------ End of SUBS ------------------
;-------------------------------------


Продолжение следует…
  • +4
  • 01 декабря 2009, 21:13
  • Markony

Комментарии (6)

RSS свернуть / развернуть
+
0
А оформить!? )))
avatar

Sergei_T

  • 01 декабря 2009, 21:17
+
0
Если нет ложных срабатываний — возможно применить и для промышленных каких-то задач. Там где нужна надежность. Вообще, приятно видеть что кто-то так активно занимается микроконтроллерами и т.п. Я вот очень далек от этого. Грамотных спецов в электронике становится все меньше и меньше
avatar

Sergei_T

  • 01 декабря 2009, 21:35
+
+1
Ага, вот DES уехал в Москву
avatar

Mihael

  • 02 декабря 2009, 09:46
+
0
Надо написать ему — пусть к нам присоединяется)
avatar

Sergei_T

  • 02 декабря 2009, 12:48
+
0
Спасибо Sergei_T за помощь в красивом оформлении исходника!
После отладки — оформлю архив *.zip с полным пакетом минимально-необходимого для сборки реального устроиства.
Куда выложить архив? Как поступить правильно?
avatar

Markony

  • 02 декабря 2009, 10:25
+
0
Выложим — не проблема
Вообще нам нужен свой файл хостинг и хостинг изображений
avatar

Sergei_T

  • 02 декабря 2009, 12:47

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.