;casovac sepnuti triacem po telefonu Dseg milis data 30h ;citac do 50 milisekund sekis data 31h ;citac do 1 sekundy minis data 32h ;citac do minuty cion data 33h ;citac zapnuti ciof data 34h ;citac vypnuti citich data 35h ;citac ticha cicas data 36h ;citac minut sepnutí ends Bseg istrt bit p3.2 ;nastav casovani istop bit p3.3 ;ukonceni casovani qledj bit p3.4 ;ledka po tichu qledt bit p3.5 ;ledka prijem telefonu qtria bit p3.7 ;triak uz bit 0h ;proslo 50ms on bit 1h ;zapni citac casovani jo bit 2h ;ticho telefonu proslo az bit 3h ;prosla minuta tele bit 4h ;telefon zaznel ba1 bit 5h ;prevraceci bit ends Cseg ends ;%S ;########################################################### ;########################################################### ;odskoky po prerusenich ;########################################################### ;########################################################### ;___________________________________________ org 0 ljmp start ;po resetu do inicializace systemu ;_________________________________________ org 3h reti ;IE0 ;_________________________________________ org 0bh ajmp cas ;TF0 citani casu ;_______________________________________________ org 13h clr on ;smaz bit zapnuti reti ;IE1 ;_______________________________________________ org 1bh reti ;TF1 ;_______________________________________________ org 23h reti ;ES ;_____________________________________________ ;########################################################### ;preruseni cas ;########################################################### org 100h cas: push acc push psw djnz milis,casend ;250us x 200 je 50ms mov milis,#200 setb uz ;dosazena 50ms djnz sekis,casend ;50ms x 20 je 1s mov sekis,#20 djnz minis,casend ;1S X 60 je minuta mov minis,#60 setb az ;dosazena minuta ajmp casend casend: pop psw pop acc reti ;########################################################### ;inicializace ;########################################################### start: mov p3,#127 ;osetreni vystupu na log.1 mov p1,#255 mov sp,#5fh ;premisteni zasobniku mov th0,#6 ;casovac t0 200us mov tmod,#00100010b ;casovac t0 do tl0 dle th0 setb tr0 ;uvolneni citani do t0 setb ea ;uvolni vsechna povolena preruseni setb et0 ;uvolni preruseni od celych cyklu zakladny PWM od TF1 mov sekis,#20 mov milis,#250 mov minis,#60 clr uz clr az clr on clr jo clr tele ;########################################################### ;cykl ;########################################################### cykl: mov c,jo cpl c mov qledj,c ;ledka po tichu mov c,tele cpl c mov qledt,c ;ledka prijem tel jnb uz,cykl clr uz ;a dal jen kazdou 50ms ;######################### ;zapnuti vypnuti casovani ;######################### jb istop,cy3 ;nenili stisknut stop skoc clr jo ;jeli stiskly smaz co se da clr tele clr on setb qtria ;vypni triac sjmp cy20 ;a skoc nastavit citace cy3: jnb jo,cy10 ;nenili uvolneno po tichu skoc mov c,istrt ;jestlize neni telefon anl c,tele ;ale uz byl jnc cy5 ;nenili tak skoc sjmp cy20 ;a jeli tomu tak ztrata telefonu a skoc cy5: jb istrt,cy30 ;nenili telefon skoc setb tele ;prijat signal nahod tele djnz ciof,cy7 ;hlidani casu vypnuti po telefonu clr on ;vypni citac casu setb qtria ;vypni triac mov cicas,#0 ;smaz citac casu cy7: djnz cion,cy30 ;hlidani casu zapnuti po telefonu setb on ;zapni odcitani casu clr qtria mov cicas,#0 ;smaz citac casu mov minis,#60 ;nastav citac do minuty clr jo ;smaz splnene ticho clr tele ;smaz ze znel telefon clr az ;smaz priznak minuty sjmp cy30 ;######################### ;osetreni ticha po poruse signalu telefonu ;######################### cy10: jnb istrt,cy20 ;jeli signal obskoc djnz citich,cy30 ;citani casu ticha setb jo ;telefon byl v klidu muze prijit dalsi hovor cy15: mov cion,#100 ;5 x 20 je 5s signalu do zapnuti mov ciof,#20 ;1 x 20 je 1s signalu do vypnuti mov citich,#100 ;5 x 20 je 5s ticha do opetovneho ovladani sjmp cy30 cy20: clr jo ;smaz priznak po tichu clr tele ;a roztelefonovano sjmp cy15 ;a skoc ;######################### ;vypnuti od tlacitka ci telefonu a casovani citace ;######################### cy30: jb on,cy40 ;jeli nahozen on rid casovani a triac setb qtria ;nenili vypni triac ajmp cykl cy40: jnb az,cykl ;nenili minuta skoc do cyklu ;######################### ;casovani v hexa ;######################### cy50: clr az ;smaz az priznak od casovani setb c ;pricti do citace casu sepnuti 1 minutu mov a,cicas addc a,#0 ;pricitame v hexa mov cicas,a jc cy60 ;preteceni citace je take stop ;######################### ;prepocet predvolby do hexa ;######################### mov a,p1 ;nacti predvolbu casu je negovany cpl a ;prevrat ho zpet mov c,0e0h ;kvuli tistaku :o)) mov ba1,c mov c,0e2h mov 0e0h,c mov c,0e1h mov 0e2h,c mov c,ba1 mov 0e1h,c mov c,0e4h ;kvuli tistaku :o)) mov ba1,c mov c,0e6h mov 0e4h,c mov c,0e5h mov 0e6h,c mov c,ba1 mov 0e5h,c mov r7,a ;uloz si anl a,#11110000b ;vezmi jen vyssi digit swap a ;hod ho na nizsi digit mov b,#10 ;vynasob 10 mul ab mov r6,a ;uloz si mov a,r7 ;vyber predlohu anl a,#00001111b ;vezmi jen nizsi digit add a,r6 ;secti oba digity do cisla v bin mov r7,a ;uloz si ;######################### ;porovnani casu a reseni sepnuti ;######################### clr c ;odecti predlohu od nacitaneho casu mov a,cicas subb a,r7 ;nastalali vypujcka, cas jeste nedospel jc cy70 cy60: setb qtria ;nastav triac clr on ;vypni uvolneni citani mov cicas,#0 ;vynuluj citac citani casu sjmp cyend cy70: clr qtria ;drz triac v sepnuti cyend: ajmp cykl ;########################################################### ;########################################################### ;########################################################### ;%E ends end