Помогите пожалуйста! Нужно, используя микроконтроллер семейства MCS-51, построить схему самых простых часов(4 семисегментных индикатора(часы,минуты) и две кнопки для их установки) и код программы. Все облазил, везде на AVR(
Поищите здесь тему "in vino veritas" . там идет монолог одного индивида, который как раз на этом семействе специализируется. В той теме и схемы и исходники.
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
for ibiza11 Вообще-то вышеуказанная тема посвящена не столько mcs51, сколько сравнительному анализу программ одного устройства для 4-х различных семейств (пока готовы только at89s52 и atmega8515 - я ж не профи с мелкософта, а проги пишу в свободное время под ассемблером, в планах еще PIC16 и PIC18 ). Конечно понимаю, что крутым современно мыслящим товарищам я не слишком по нраву, но у каждого есть право на свою точку зрения.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Не знаю о каких современных программистах, выказывающих негатив в Вашу сторону Вы говорите, я не из их числа. То что тема посвящена анализу одного и того же устройства на различных архитектурах и микроконтроллерах - я знаю и ничего против не говорил, но это совершенно не относилось к тем е этой ветки, поскольку тут спрашивали только часы, собственно поэтому я не стал здесь это упоминать. И я совершенно никоим образом не хотел задеть Ваше личное мнение. Разве я что-то писал по этому поводу? Каждый занимается тем, что ему нравится.
Builda digital clock that turns AC load on/off with preset time. sourcecode with sdcc for 8051. The Clock Controller V1.1was designed to be an exemplary of using 'C' language to control timer0interrupt, 7-segment LED and keypad scanning. It provides 1-bit sink currentdriving output, for driving a relay, opto-triac, say. Many projects requiring7-segment display and keypad interfacing may get the idea from the Clockcircuit and software.
Hardware
Figure 1 shows a circuitdiagram of the Clock Controller V1.1. P10-P1.7 drives 7-segment commonanode LED with sink current. P3.0-P3.3 also drives a base pin of 4-PNPtransistor, 2n2907 with sink current. As shown in the figure, the 2nd 2-digitLED that connected to P3.2 and P3.3 is rotated 180 degrees to the 1st 2-digitallowing the pt. segment to be used for 1 second blinking. P3.0-P3.3 alsoconnects four momentary switches while the other legs are tied to inputport P3.4. During display and key switch scanning, a logic '0' is shiftedfrom P3.0 to P3.3, if there was a key pressed, P3.4 then became low.P3.7 is a 1-bit sink current driving, an example in the circuit uses a2n2907 to drive a small electromechanical relay 5V, say.
Figure 1: Schematic Diagramof the Clock V1.1 Software The program clock.c was Спойлер
Код:
/* CLOCK V1.0 89C2051 + 4-digit 7-SEG led + 4-key switch Simple Digital Clock demostrates scanning LED and key switch. The clock has 1-bit output port P3.7 for driving AC load through MOC3040+triac. The source program was compiled by Micro-C with optimize option.
extern register char cputick; unsigned register char sec100,sec,sec5,min,hour,flag1,command,ACC,temp,opto; /* above must be defined as register for tiny model */ unsigned register char i,digit,buffer[4],onHour1,onMin1,offHour1,offMin1; register char key,delay,count1; char convert[10] = {0x3F,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f};
blink() { if((flag1 & 0x04) != 0) /* check bit 2 if set decrement temp until zero */ {temp--; if (temp != 0) { buffer[1] |= 0x80; buffer[2] |= 0x80; } else( flag1 &= ~0x04); } }
keyexe() { if (key != -1) { if ((flag1 & 0x80) == 0) /* within 0.5 sec after 1st press the following execution is not allowed */ { flag1 |= 0x80; delay = 50;
switch(key){ case (0): /* key position 0 */ manualOnOff(); /* service key 0 */ break; case (1): /* key position 1 */ savetimeOnOff1(); /* service key 1 */ break; case (2): /* key position 2 */ setmin(); /* service key 2 */ break; case (3): /* key position 3 */ sethour(); } }
} }
sethour() { hour++; if ( hour== 24) hour = 0;
}
setmin() { min++; sec = 0; if( min == 60 ) min = 0; }
comparetime() { if((flag1 & 0x01) != 0 ) { flag1 &= ~0x01; if(hour == onHour1 && min == onMin1) opto = 0x7f; /* clear P3.7 turning opto on */ if(hour == offHour1 && min == offMin1) opto = 0xff; /* set bit P3.7 turning opto off */ } }
offmsd()
{ if (buffer[3] == 0x3f) /* if msd = '0' then put blank unstead */ buffer[3] = 0x00; }
pause(j) int j; { int i; for (i = 0; i < j; i++) ; }
written in ‘C’ language and was complied by Micro-C Compiler from DunfiledDevelopment Systems. The memory model is TINY. The hex file of clock.csuitable for downloading by Easy-Downloaderis (Это программатор для серии 89с2051, 89с4051 находится на этом же сайте проект копировать не буду, кому надо посмотрят) clock.hex. Спойлер:0300000002000EED :0300030002019F58 :20000B0002019675811FD2AFD2A91201A280FE12001B80FBC82581C822C92581C97A002224 :20002B00D083D082CF2581F581CFC082C08322CF2581F581CF22FBE493CB22FCE493FB7492 :20004B000193CC22FAE493F9740193CA2229F9E5F03AFA227C00CB30E7011CCB2275F0009B :20006B0030E70215F022FDE493FF7401934F7004A3A3800C740293B50510740393B5F00A99 :20008B00E493C0E0740193C0E022A3A3A3A380D7FEEBA4FD8EF0ECA4FCEB8EF0A4C5F02C0F :2000AB002DC5F02211B58EF0ED22C002C001AAF0F97E007D007F11C3E933F9EA33FADF0867 :2000CB00F5F0E9D001D00222ED33FDEE33FEC3ED9BF5F0EE9C40E0ADF0FED380DBBB0001E7 :2000EB0022C333C5F033C5F0DBF722BB000122C3C5F013C5F013DBF722240280022401C595 :20010B00F03400C5F022C394028003C39401C5F09400C5F0223116F4C5F0F4C5F02245F095 :20012B007022042231784024801A3178401E7014801A3178400E7014800A3178500E8004A0 :20014B00318C6008E4F5F022318C60F8E4F5F00422318C40F780ED318C40F170E780ED313C :20016B008C40E170E780DD318C50E180D7C39BC5F09C20E70720D207C345F02220D2F9D340 :20018B0022C5F0C39C7003E5F09B22758CDC758A0005083205083274FFF512E4F5087412DE :2001AB00F50DE4F50CE4F50A74FFF51DE4F50E7412F5197401F51A7412F51B7402F51CE4E5 :2001CB00F51FE4F5F079157A001200587440F7740175F00079157A001200587440F77402AD :2001EB0075F00079157A001200587440F7740375F00079157A001200587440F7748075F020 :20020B0025C0E0C0F012079E15811581740175F00045F07003020256E5081200687B0112AA :20022B00005F12012F700302023B1202C8020223E4F50812025712036F12042612072A12FC :20024B0004781206961206C602021722E5090509E50975F0007B647C0012017270030202A8 :20026B00C7E4F509E50E4405F50E7432F511E50A050AE50A75F0007B3C7C00120172700362 :20028B000202C7E4F50AE50E4402F50EE50C050CE50C75F0007B3C7C0012017270030202E2 :2002AB00C7E4F50CE50D050DE50D75F0007B187C0012017270030202C7E4F50D22058105C7 :2002CB00817408F51474FFF51DE4F5F078FD12001FF608A6F078FD12001FE60886F07B04FC :2002EB007C0012012F701902036A78FD12001FE60886F012010818F608A6F012011680D5EE :20030B00E514F45512F5B078FD12001FE60886F079157A00120058E7F4F590740175F00023 :20032B00C0E0C0F01207551581158174FFF590E5B054101200687B0012005F12014B7003A0 :20034B0002035978FD12001FE60886F0F51DE51475F0007B017C001200F6F5140202F515A3 :20036B0081158122E4F5F079157A00120058E50C75F0007B0A7C001200AFC001C00279C129 :20038B007A0712005889828A83E493D007D000F6740175F00079157A00120058E50C75F099 :2003AB00007B0A7C001200B5C001C00279C17A0712005889828A83E493D007D000F6740220 :2003CB0075F00079157A00120058E50D75F0007B0A7C001200AFC001C00279C17A071200D2 :2003EB005889828A83E493D007D000F6740375F00079157A00120058E50D75F0007B0A7CC8 :20040B00001200B5C001C00279C17A0712005889828A83E493D007D000F622E50E54047554 :20042B00F0007B007C001201537003020477E5111511E51175F0007B007C0012015370032D :20044B00020471740175F00079157A00120058E74480F7740275F00079157A00120058E7F8 :20046B004480F7020477E50E54FBF50E22E51D1200687BFF12005F12015370030204DEE5C9 :20048B000E548075F0007B007C0012014B70030204DEE50E4480F50E7432F51EE51D1200D7 :2004AB00689004CA0200711205BD0204DE1205140204DE1204F80204DE1204DF0204DEC4A2 :2004CB00040300BE040200B8040100B20400000000DE0422E50D050DE50D75F0007B187C65 :2004EB000012014B70030204F7E4F50D22E50C050CE4F50AE50C75F0007B3C7C0012014B4F :20050B007003020513E4F50C22E51F051FE51F1200687B0112005F12014B7003020571E57B :20052B000DF519E50CF51AE4F5F079157A00120058E4F7740175F00079157A0012005874BF :20054B0068F7740275F00079157A001200587478F7740375F00079157A001200587471F7D7 :20056B00120650020577E4F51F12057822E50DF51BE50CF51CE4F5F079157A00120058742E :20058B0063F7740175F00079157A001200587463F7740275F00079157A001200587478F7AC :2005AB00740375F00079157A001200587471F7020650E512F4447FF512548075F0007B0045 :2005CB007C0012014B7003020613E4F5F079157A00120058E4F7740175F00079157A00129E :2005EB000058E4F7740275F00079157A001200587468F7740375F00079157A0012005874DB :20060B0078F712065002064FE4F5F079157A00120058E4F7740175F00079157A001200583F :20062B007463F7740275F00079157A001200587463F7740375F00079157A0012005874788C :20064B00F71206502205810581E4F5F078FD12001FF608A6F078FD12001FE60886F07BF486 :20066B007C0112012F701902069178FD12001FE60886F012010818F608A6F012011680D53F :20068B001202C80206751581158122E50E548075F0007B007C0012015370030206C5E51EDC :2006AB00151EE51E1200687B0012005F12014B70030206C5E50E547FF50E22E50E5401754D :2006CB00F0007B007C001201537003020729E50E54FEF50EE50D75F000AB197C0012014BE0 :2006EB00600CE50C75F000AB1A7C0012014B45F07003020704747FF512E50D75F000AB1BC2 :20070B007C0012014B600CE50C75F000AB1C7C0012014B45F0700302072974FFF5122274A7 :20072B000375F00079157A00120058E775F0007B3F7C0012014B7003020754740375F00048 :20074B0079157A00120058E4F72205810581E4F5F078FD12001FF608A6F078FD12001FE684 :20076B000886F078F912001F860308860412012F701902079978FD12001FE60886F01201A9 :20078B000818F608A6F012011680CF020780158115812278FB12001F860308860474807523 :2007AB00F0701200B5120120758921F58DF58B758859759852223F0C765E4D5B7B0E7F5FAE :00000001FF
The Clock1.c Спойлер
Код:
/* CLOCK V1.0 89C2051 + 4-digit 7-SEG led + 4-key switch Simple Digital Clock demostrates scanning LED and key switch. The clock has 1-bit output port P3.7 for driving AC load through MOC3040+triac.
The source program was modified for Proview32 C51 Compiler. 3 November 2542
#include <reg52.h> /* special function register declarations */ /* for the AT89C52 */ #include <stdio.h>
unsigned char sec100,sec,sec5,min,hour,flag1,command,temp,opto; /* above must be defined as register for tiny model */ unsigned char i,digit,buffer[4],onHour1,onMin1,offHour1,offMin1; char cputick,key,delay,count1; char convert[10] = {0x3F,0x0c,0x76,0x5e,0x4d,0x5b,0x7b,0x0e,0x7f,0x5f};
void blink() { if((flag1 & 0x04) != 0) /* check bit 2 if set decrement temp until zero */ {temp--; if (temp != 0) { buffer[1] |= 0x80; buffer[2] |= 0x80; } else( flag1 &= ~0x04); } }
void keyexe() { if (key != -1) { if ((flag1 & 0x80) == 0) /* within 0.5 sec after 1st press the following execution is not allowed */ { flag1 |= 0x80; delay = 50;
switch(key){ case (0): /* key position 0 */ manualOnOff(); /* service key 0 */ break; case (1): /* key position 1 */ savetimeOnOff1(); /* service key 1 */ break; case (2): /* key position 2 */ setmin(); /* service key 2 */ break; case (3): /* key position 3 */ sethour(); } }
void comparetime() { if((flag1 & 0x01) != 0 ) { flag1 &= ~0x01; if(hour == onHour1 && min == onMin1) opto = 0x7f; /* clear P3.7 turning opto on */ if(hour == offHour1 && min == offMin1) opto = 0xff; /* set bit P3.7 turning opto off */ } }
void offmsd()
{ if (buffer[3] == 0x3f) /* if msd = '0' then put blank unstead */ buffer[3] = 0x00; }
void pause(j) int j; { int i; for (i = 0; i < j; i++) ; }
was modified for C51 compiler. The function that updates real-time clockwas moved into timer0 interrupt service routine. The HEX file is Clock1.hex Спойлер:10007400C0E0C0F0C083C082C0D075D008438CDC1F :10008400858C8C05231200F4D0D0D082D083D0F09C :03009400D0E03287 :10009700D2AFD2A9438901858989D28C7518FFE42B :1000A700F523751412F513F5117524FFF515751F52 :1000B70012752001752112752202F526751B4075F0 :0800C7001C40751D40751E4030 :1000CF00E5236480B48100500512012E80F2E4F51F :1000DF002312016B12019C1202AA1201B2120278B2 :0500EF0012028780DB16 :0900F4000510E510B46400403071 :1000FD00E4F5104315057517320511E511B43C00F3 :02010D00401E92 :0F010F00E4F5114315020513E513B43C00400F4E :0C011E00E4F5130514E514B418004003C8 :04012A00E4F51422C2 :0B012E00751A087524FFE4F533F53462 :10013900E51AF4FAE5185AF5B0E534241BF8E6F4A3 :10014900F590E4FE7F051202B37590FFE5B020E457 :1001590003853424E51AC313F51A0534E534B404C8 :02016900CF22A3 :10016B0075F00AE51384E5F02427F8861B75F00A71 :10017B00E513842427F8861C75F00AE51484E5F052 :10018B002427F8861D75F00AE514842427F8861EAB :01019B002241 :05019C00E51530E21042 :0601A1001517E5176007C9 :0B01A700431C80431D80225315FB22E7 :0501B200E524F46028C3 :0501B700E51520E7231F :1001BC00431580752532E524600A14600B14600C1D :0401CC0014600D228C :1001D000120233221201F9221201EB221201E02253 :0B01E0000514E514B41803E4F5142224 :0E01EB000513E4F511E513B43C03E4F513220B :0701F9000526E526B40116FE :1002000085141F851320751B00751C68751D787576 :060210001E7112025D22C6 :07021600E4F52612021D228F :10021D00851421851322751B63751C63751D7875F7 :06022D001E7112025D22A9 :0A023300E518F4447FF51820E710E9 :10023D00751B00751C00751D68751E7812025D22F8 :10024D00751B00751C63751D63751E7812025D228A :10025D00E4F531F53212012E0532E5327002053129 :0B026D00E531B407F0E532B4D0EB221D :05027800E51530E70967 :0A027D001525E525700353157F22B7 :05028700E51530E01D4B :10028C005315FEE514B51F08E513B5200375187F4B :0E029C00E514B52108E513B522037518FF22FD :0902AA00E51EB43F03751E00229D :1002B300E4FCFD8EF0B2F7EC6480B5F004EDB50715 :0B02C3000050070DED70EC0C80E922EC :0C02CE0028273F0C765E4D5B7B0E7F5FA7 :03000B000200747C :0300000002000EED :10000E00758135E4787FF6D8FD9002CEE4937002C8 :10001E00804EC31392D5C31392D1FFA3E493F8B0CD :10002E00D5402130D505E4A393F5A0E420D102A359 :10003E009320D507F608DFF3A380D1F208B800F6B7 :10004E0005A080F2E8030303541F2420F9E85407A7 :10005E00F8E4D333B80002800333D8FD47F780D8D5 :06006E0075A0FF020097DF :0102DA000023 :00000001FF smaller than compiled by Micro-C.
I got many requests askingmodification of the source code. Now you can modify the source code byyourself with the free compiler sdcc for 8051. Here is the source codeof new firmware, clock2.c Спойлер
Код:
/* CLOCK V1.0 89C2051 @11.0592MHz + 4-digit 7-SEG led + 4-key switch Simple Digital Clock demostrates scanning LED and key switch. The clock has 1-bit output port P3.7 for driving AC load through MOC3040+triac.
The source program was modified for sdcc for 8051 January 27, 2004
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
void blink() { if((flag1 & 0x04) != 0) /* check bit 2 if set decrement temp until zero */ {temp--; if (temp != 0) { buffer[1] |= 0x80; buffer[2] |= 0x80; } else( flag1 &= ~0x04); } }
void keyexe() { if (key != -1) { if ((flag1 & 0x80) == 0) /* within 0.5 sec after 1st press the following execution is not allowed */ { flag1 |= 0x80; delay = 50;
switch(key){ case (0): /* key position 0 */ manualOnOff(); /* service key 0 */ break; case (1): /* key position 1 */ savetimeOnOff1(); /* service key 1 */ break; case (2): /* key position 2 */ setmin(); /* service key 2 */ break; case (3): /* key position 3 */ sethour(); } }
void comparetime() { if((flag1 & 0x01) != 0 ) { flag1 &= ~0x01; if(hour == onHour1 && min == onMin1) opto = 0x7f; /* clear P3.7 turning opto on */ if(hour == offHour1 && min == offMin1) opto = 0xff; /* set bit P3.7 turning opto off */ } }
void offmsd()
{ if (buffer[3] == 0x3f) /* if msd = '0' then put blank unstead */ buffer[3] = 0x00; }
void pause(int j) { int i; for (i = 0; i < j; i++) ; }
and the hex Спойлер:040000000203313294 :03000B00020038B8 :0100130032BA :01001B0032B2 :0100230032AA :01002B0032A2 :1003310075810F12032DE582600302003302003341 :1000330012007E80FEC0E0C0F0C082C083C002C058 :1000430003C004C005C006C007C000C001C0D0750E :10005300D008438CDC054375D0001200DD75D00851 :10006300D0D0D001D000D007D006D005D004D00323 :10007300D002D083D082D0F0D0E032D2AFD2A94325 :100083008901D28C7538FF754300753412753300BE :100093007531007544FF753500753F127540017564 :1000A3004112754202754600753B40753C40753DF3 :1000B30040753E40C3E543648094815005120117A7 :1000C30080F27543001201681201A31202FB1201B0 :1000D300C51202BD1202D380DB220530C3E5309482 :1000E3006440307530004335057537320531C3E55B :1000F30031943C401E7531004335020533C3E5336B :10010300943C400F7533000534C3E5349418400321 :1001130075340022753A087544FF7A007B00C3EA00 :100123009404EB64809480503BE53AF4FCE5385C3E :10013300F5B0EA243BF88604ECF4F590900005C092 :1001430002C003120304D003D0027590FF7410554C :10015300B0FCBC00028A44E53AC313F53A0ABA007C :10016300010B80BA2275F00AE53384AAF0EA900302 :100173002393FA8A3B75F00AE5338490032393FAB9 :100183008A3C75F00AE53484AAF0EA90032393FAD3 :100193008A3D75F00AE5348490032393FA8A3E225C :1001A30074045535FABA000280171537E537600E27 :1001B3007480453CF53C7480453DF53D80035335E3 :1001C300FB22E544B4FF02804874805535FABA0037 :1001D30040433580754532E54420E735C374838554 :1001E30044F063F08095F04028E54425E0254490F1 :1001F30001F67302020202020702020C020211124A :100203000269800D12022E8008120220800312025E :1002130015220534E534B41803753400220533750B :100223003100E533B43C03753300220546E546B49B :10023300011785343F853340753B00753C68753D38 :1002430078753E7112029B80067546001202532296 :10025300853441853342753B63753C63753D7875E1 :100263003E7112029B22E538F4FA747F4AF5387422 :10027300805538FABA0011753B00753C00753D682E :10028300753E7812029B800F753B00753C63753D8C :1002930063753E7812029B227A007B00C3EA94D0F6 :1002A300EB648094875012C002C003120117D0037D :1002B300D0020ABA00E60B80E32274805535FABAFD :1002C3000002800B1545E5456002800353357F220C :1002D30074015535FABA0002801D5335FEE534B575 :1002E3003F08E533B5400375387FE534B54108E58C :1002F30033B542037538FF22E53EB43F03753E0034 :1003030022AA82AB837C007D00C3EC9AED64808BD0 :10031300F063F08095F050070CBC00ED0D80EA22ED :0E0323003F0C765E4D5B7B0E7F5F7582002285 :00000001FF file, clock2.hex.Please test it and let me know the result. I haven't tested my hardwareyet, because I cannot find it now. This project is quite long time ago.You may add your code or modify whatever you like to have using sdcc! Youmay download the sdcc here, sdcc.zip. Practice
The function time( ) in clock.cwas not put in the timer0 service routine, there's a bit delay at scanLED() function making the clock delay, try write a function that make adjustmentof the clock. With C51 compiler, there's aspace for more functions to put in, write a function that saves a secondtime on and off.
Heavy Load Driving I suggest to use a zero switchsolid-state relay for driving heavy loads (>10A). Most solid state relay'sinput can be driven with 3-30Vdc without any problems.
Contribution to Clock Controller Project
Sridhar Vittalrao designed the PCB layout (Protel), Clock.zip Petar Timotijevic Pancevo, Serbia made the single sided PCB in Cadsoft Eagle for Clock Controller Ver. 1.1. The clock controller has two PCB. The first board is main circuit and the second board is display module. Connection between them is made with ribbon cable. This makes easier to implement display in the right angle. More detailed in the compressed file, i.e. Eagle3D view of boards, specification, compiler instructions, and PCB print data information. Petar has modified some part based on the original circuit: Transformer and the output are implemented, i.e. selectable 220V or 110V. The output is optocoupler with manual on/off, and switch for pin11 output, relay on 12V with signal led diode, 78S05 is used instead of 78L05 (100mA), 7812 if needed, standard 7-seg display connection. PCB and circuit have been tested. Click here to download it, PCB V1.1.RAR Petar Timotijevic describes how to modify the time schedule in the HEX code using the freeware HEX EDITOR directly. This eliminates the need of recompilation. Click here for the explanation, Modify Time Schedule with HEX Editor
Clock Controller V2.0
One day I found a small 7-segment LED with multiplex connection. It is nice to be used as the display for clock controller. So I spent my weekend built the board. Below are the pictures for outlook and internal. The board is quite small. The output has small relay for 0.5A AC load.
This version has only three buttons. We can set current hour and min easily. The preset time on/off for relay control output are defined in the program.
// preset set time on/off are predefined in rom, user may change it here
Also if you need more period to turn on/off you can add, say onHour2, onMin2, offHour2, and offMin2. And provide the function that compares such period. It will be the same as function comparetime. Or you may insert at if statements. When reset, the board will turn output off, until user set current time, the clock will run again. This prevent improper output firing.
void comparetime() { if(flag1 & 0x40) // compare time only when user enter new time { if(flag1 & 0x01) { flag1 &= ~0x01; if(hour == onHour1 && min == onMin1) opto = 0x7f; /* clear P3.7 turning opto on */ if(hour == offHour1 && min == offMin1) opto = 0xff; /* set bit P3.7 turning opto off */ } } }
_________________ Купи два беляша и собери из них кошку Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви) Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Неплохая схемка, но из-за проблем с добычей программатора я предпочитаю такие не публиковать. Кстати, вполне повторимо и на AT89S51/52, при соответствующем изменении разводки платы. А вот уже 40-лапки спокойненько с помощюь железяки вида STK200 прошиваются с простенькой оболочкой (на форуме уже многократно выложенной).
_________________ Купи два беляша и собери из них кошку Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви) Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Я вообще-то и сам делал железо и проги как под саму приставку, так и ее оболочку в ПК. Да значительно посолиднее. Но это не одно и то же чтоб сделать заведомо рабочее устройство по аналогии с тем же STK200. Тем более, что у AT89C2051 есть небольшой нюанс в режиме парралельного программирования, зато паакостный...
Под какую такую приставку? Не вижу причины для сложности, накосячить можно с любым контроллером. В устройствах (заведомо работающих) постоянно косячат с фьюзами на пример, так, что это не показатель. О каком таком ньюансе идет речь? Сколько их пошил, не сталкивался с проблемами.
_________________ Купи два беляша и собери из них кошку Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви) Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
_________________ Купи два беляша и собери из них кошку Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви) Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Есть сомнения насчёт правильности сопротивления R13. А также очень советовал бы применить для кнопочек S1 S2 какую-нибудь из схем устранения дребезга контактов. Да и насчёт Reset тоже есть сомнения...
А вообще откуда дровишки то ? ( в смысле схемка то откуда ? )
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
В результате Вы изволили убрать например R13 откуда надо и врисовать его туда, куда не надо. Ну это ладно, нормальное явление при списывании у соседа за партой сзади по диагонали - к его ошибкам добавим свои .. Но ведь и у "оригинала" вопрос дребезга S1 S2 не продуман. А ещё я подумал было, что Вы с сигналом Reset перемудрили, а оказывается - нет - просто при переписывании не "подали" питание на ИМС . И это даже хорошо - так она точно не сгорит хотя бы.. В общем сами посмотрите на оба рисунка повнимательнее ещё несколько раз. Найдите N отличий..
_________________ < виртуальная "кнопочка" >--( WWW ) <- Убедительная просьба интересующимся старыми компьютерами типа РК86 - не пишите в теме в барахолке, пишите Ваши вопросы в ( лс ) пожалуйста
Зряаа так насчет непродуманности антидребезга - при программной реализации динамической индикации это "побочный продукт", не говоря уже о прочих программных вариантах... вот, к примеру дремуче-древняя платформа для счетно/термо и прочей мелочевки, правда несколько прилизанная. Можно и под часики запихнуть. Правда кноп и индикаторов там "с избытком".
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 26
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения