"Help me! Urgent!" Unexpected behavior with Pic16f1847

Discussion in 'Embedded Systems and Microcontrollers' started by PIYUSH SONI, Mar 19, 2015.

  1. PIYUSH SONI

    Thread Starter Member

    Nov 15, 2013
    32
    1
    Hi to all, I am into a project of "programmable timer" using real time clock with ds1307, for that I am working with Pic16f1847 and using Mikroc pro compiler for programming. I am using 16Mhz internal oscillator for clocking the device. I am using PICKIT3 programmer for building the code. My code is working fine with PIC18f4520 as per my application . When I build the code into Pic16f1847 I am able to set the clock timing but when I am setting the time to switch on the relay, its not switching. Some unexpected problems I came across are as follows:- (i) Whenever I put any if condition of the code in beginning of the infinite loop I am not getting the display on Lcd. (ii) Whenever I add any extra text to display on the Lcd I am not getting anything on the Lcd, (iii) I was getting Rom memory full errors that's why I have written the routines for Lcd messages and delays and now my Rom is 50% free with 42% free Ram space. My clock is working fine and I am able to set the clock and calendar . And this full code works fine in 18f4520 with change in register configuration as per 18f4520. I am posting my code. Help me to find any solution of it.

    Code (Text):
    1. // Lcd module connections
    2. sbit LCD_RS at RB0_bit;
    3. sbit LCD_EN at RB3_bit;
    4. sbit LCD_D4 at RB5_bit;
    5. sbit LCD_D5 at RB6_bit;
    6. sbit LCD_D6 at RB7_bit;
    7. sbit LCD_D7 at RB2_bit;
    8.  
    9. sbit LCD_RS_Direction at TRISB0_bit;
    10. sbit LCD_EN_Direction at TRISB3_bit;
    11. sbit LCD_D4_Direction at TRISB5_bit;
    12. sbit LCD_D5_Direction at TRISB6_bit;
    13. sbit LCD_D6_Direction at TRISB7_bit;
    14. sbit LCD_D7_Direction at TRISB2_bit;
    15. //End LCD connection
    16.  
    17. sbit set at RA4_bit;
    18. sbit upcount at RA3_bit;   // switch to increment the counter
    19. sbit downcount at RA2_bit;    // switch to decrement the counter
    20. sbit set_clock at RA1_bit;      // switch for setting menu
    21. sbit Relay1 at RA7_bit;     // Relay connection
    22.  
    23.  
    24. unsigned char BCD2LowerCh(unsigned char bcd);            // Binary to Decimal conversion for RTC
    25. unsigned char BCD2UpperCh(unsigned char bcd);             // Binary to Decimal conversion for RTC
    26. unsigned short read_ds1307(unsigned short address );       // Function for RTC read
    27. void write_ds1307(unsigned short address,unsigned short w_data);        // Function for RTC write
    28.  
    29. void switching();
    30.  
    31. bit switch_flag;
    32. char ampm,switch_count_on,switch_count_off;
    33. unsigned char countr, second,days,hours,minutes,years,dates,months,date, month, hour, minute,sec,day,year,count7,count8,count9,count10,minute2,
    34. dy, hrs2, dat2,day2,sec1, mon2, yer2,mint3,hrs3,dat3,mon3,yer3,rr,hrs2pm,hour11,count11,count1,count2,count3,count4,count5,count6,
    35. day11,day12, day13, day14, day15, day16,day17,dt,mt,yr,mint,hrs, minute1,hour1,day1,date1,month1,year1,minute3,hour3, minute4, hour4;      // Variables declaration for clock and date
    36.  
    37.  
    38.  
    39. char minuteclk(unsigned char mint2);       //Function for minutes
    40. char hoursclk(unsigned char hrs2pm);       //Function for hours
    41. char dayclk(unsigned char day2);           //Function for day
    42. char dateclk(unsigned char dar2);          //Function for date
    43. char monthclk(unsigned char mon2);         //Function for month
    44. char yearclk(unsigned char yr2);          //Function for year
    45.  
    46.  
    47. char days1[] = "SUN";
    48. char days2[] = "MON";
    49. char days3[] = "TUE";
    50. char days4[] = "WED";
    51. char days5[] = "THU";
    52. char days6[] = "FRI";
    53. char days7[] = "SAT";
    54.  
    55. char clock[9];
    56. char calender[9];
    57. char *text ="0";
    58. char *text0 ="00";
    59. char *text1 ="00";
    60. char *text2 ="00";
    61. char *text3 ="00";
    62. char *text4 ="00";
    63. char *text5 ="00";
    64.  
    65.  
    66.  
    67. void Delay2ms(void);
    68. void Delay200ms(void);
    69. void Delay500ms(void);
    70. void Delay1s(void);
    71. void Delay4s(void);
    72. void lcd_clr(void);
    73. void msg_welcome(void);
    74. void msg_setmenu(void);
    75. void msg_s_option(void);
    76. void msg_setclock(void);
    77. void msg_clock(void);
    78. void msg_calendar(void);
    79. void msg_clock_notify(void);
    80. void msg_switch_min_hr(void);
    81. void msg_switch_on_notify(void);
    82. void msg_switch_off_notify(void);
    83. void msg_on_time(void);
    84. void msg_off_time(void);
    85.  
    86. void main()
    87. {
    88.   PORTA =  0b00000000;
    89.   LATA = 0;
    90.   ANSELA = 0;
    91.   TRISA =  0b01011111;
    92.   PORTB =  0;
    93.   LATB = 0;
    94.   ANSELB = 0b00000000;        // PORTB pins are all digital
    95.   OSCCON = 0b11110010;         // 16MHZ INTOSC
    96.   OSCTUNE = 0b00011111;
    97.  
    98.   ADRESH = 0;
    99.   ADRESL = 0;
    100.   ADCON0 = 0;
    101.  
    102.   ADCON1 = 0b00001111;
    103.  
    104.   C1ON_bit  = 0;
    105.  
    106.   TRISA.F4= 1;     /// FOR Button
    107.   TRISA.F3= 1;
    108.   TRISA.F2= 1;
    109.   TRISA.F1= 1;
    110.   TRISA.F7= 0;     // RELAY1
    111.  
    112.   switch_flag = 0;
    113.   switch_count_on = 0;
    114.   switch_count_off = 0;
    115.   I2C1_Init(100000);
    116.   Lcd_Init();
    117.   lcd_clr();
    118.   msg_welcome();
    119.   Delay1s();
    120.  
    121.   lcd_clr();
    122.  
    123.  
    124.  
    125.  
    126.   do
    127.   {
    128.  
    129. begin:
    130.  
    131.  
    132. second = read_ds1307(0X00);        // read second
    133. minute = read_ds1307(0X01);     // read minute
    134. hour = read_ds1307(0X02);       // read hour
    135.  
    136. if (hour<0x12)
    137. {
    138. if (hour==0)
    139. {
    140. hour = 0x12;
    141. ampm = 'A';
    142.   }
    143. else
    144. ampm = 'A';
    145.     }
    146.  
    147. else if (hour == 0x12){
    148. ampm = 'P';
    149. }
    150.  
    151. else if (hour>0x12 && hour<0x20)
    152. {
    153. hour = hour-0x12;
    154. ampm= 'P';
    155. }
    156.  
    157. else if (hour==0x20){
    158. hour = 0x08;
    159. ampm = 'P';
    160. }
    161.  
    162. else if (hour==0x21){
    163. hour = 0x09;
    164. ampm = 'P';
    165. }
    166.  
    167. else if (hour==0x22){
    168. ampm = 'P';
    169. hour = 0x10;
    170. }
    171.  
    172. else if (hour==0x23){
    173. ampm = 'P';
    174. hour = 0x11;
    175. }
    176.  
    177. day=read_ds1307(0X03);        // read day
    178. date=read_ds1307(0X04);       // read date
    179. month=read_ds1307(0X05);      // read month
    180. year=read_ds1307(0X06);       // read year
    181.  
    182. write_ds1307(0x19,second);      // write second
    183. write_ds1307(0x1A,minute);      // write minute
    184. write_ds1307(0x1B,hour);        // write hour
    185. write_ds1307(0x1C,day);         // write day
    186. write_ds1307(0x1D,date);        // write date
    187. write_ds1307(0x1E,month);       // write month
    188. write_ds1307(0x1F,year);        // write year
    189.  
    190. clock[0] = BCD2UpperCh(hour);
    191. clock[1] = BCD2LowerCh(hour);
    192. clock[2] = ':';
    193. clock[3] = BCD2UpperCh(minute);
    194. clock[4] = BCD2LowerCh(minute);
    195.  
    196. clock[5] =' ';
    197. clock[6] =ampm;
    198. clock[7] ='M';
    199. clock[8] ='\0';
    200.  
    201. Lcd_Out(2,1,calender);
    202. Lcd_Out(1,1,clock);
    203.  
    204. calender[0] = BCD2UpperCh(date);
    205. calender[1] = BCD2LowerCh(date);
    206. calender[2] ='/';
    207. calender[3] = BCD2UpperCh(month);
    208. calender[4] = BCD2LowerCh(month);
    209. calender[5] ='/';
    210.  
    211. calender[6] = BCD2UpperCh(year);
    212. calender[7] = BCD2LowerCh(year);
    213. calender[8] = '\0';
    214.  
    215. if(day ==1)
    216. {
    217. Delay2ms();
    218. Lcd_Out(2,10,days1);
    219. }
    220. if(day ==2)
    221. {
    222. Delay2ms();
    223. Lcd_Out(2,10,days2);
    224. }
    225. if(day ==3)
    226. {
    227. Delay2ms();
    228. Lcd_Out(2,10,days3);
    229. }
    230. if(day ==4)
    231. {
    232. Delay2ms();
    233. Lcd_Out(2,10,days4);
    234. }
    235. if(day ==5)
    236. {
    237. Delay2ms();
    238. Lcd_Out(2,10,days5);
    239. }
    240. if(day ==6)
    241. {
    242. Delay2ms();
    243. Lcd_Out(2,10,days6);
    244. }
    245. if(day ==7)
    246. {
    247. Delay2ms();
    248. Lcd_Out(2,10,days7);
    249. }
    250.  
    251.  
    252. if(set == 0)                    // Set switch must be pressed one time
    253.     {
    254. start:
    255.  
    256.        Delay200ms();
    257.        lcd_clr();
    258.     msg_setmenu();
    259.  
    260.  
    261.        Delay1s();
    262.     lcd_clr();
    263.        msg_s_option();
    264.  
    265.        Delay500ms();
    266.  
    267. for(count1=0; count1<4;count1)
    268. {
    269.              Delay500ms();
    270.              if(upcount == 0 )    // Press upcount switch to select  desired option
    271.              {
    272.               count1+=1;
    273.               }
    274.               if(downcount == 0 )      // For decrement
    275.              {
    276.               count1-=1;
    277.               }
    278.               if(count1 == 4)
    279.               {
    280.               count1 = 0;
    281.               }
    282.  
    283.               text[0] = count1 % 10 +48 ;
    284.               Lcd_out(1, 15, text);
    285.  
    286.               if(count1==1 && set == 0)
    287.               {
    288.                   lcd_clr();
    289.                   msg_setclock();
    290.                   Delay1s();
    291.                   goto  Clock_setting ;
    292.               }
    293.             if( count1==2 && set == 0)
    294.               {
    295.                   lcd_clr();
    296.                   msg_on_time();
    297.                   Delay1s();
    298.                   goto On_Status;
    299.               }
    300.        if( count1==3 && set == 0)
    301.               {
    302.                  lcd_clr();
    303.                   msg_off_time();
    304.                   Delay1s();
    305.                   goto Off_Status;
    306.               }
    307.               if(set_clock == 0)
    308.               {
    309.                   Delay2ms();
    310.                  lcd_clr();
    311.                   goto begin;
    312.               }
    313.  
    314.                              }
    315.  
    316.  
    317.  
    318. Clock_setting :
    319.  
    320.  
    321. TimeSet_clock:
    322.  
    323.               lcd_clr();
    324.               msg_clock();
    325.  
    326.  
    327.               Delay1s();
    328.               lcd_clr();
    329.               msg_calendar();
    330.  
    331.  
    332. for(count2 = 0; count2 <7; count2)
    333. {
    334.             Delay500ms();
    335.              if(upcount == 0 )
    336.              {
    337.               count2+=1;
    338.               }
    339.              if(downcount == 0 )
    340.              {
    341.               count2-=1;
    342.               }
    343.                 if(count2 == 7)
    344.               {
    345.               count2 = 0;
    346.               }
    347.               text[0] = count2 % 10 +48 ;
    348.               Lcd_out(2, 15, text);
    349.  
    350.               if(count2==1 && set == 0)
    351.               {
    352.               minute2 = 1;
    353.               minute1=minuteclk(minute2) ;
    354.               write_ds1307(0x20,Dec2Bcd(minute1));
    355.               goto TimeSet_clock;
    356.               }
    357.  
    358.               if( count2==2 && set == 0)
    359.               {
    360.               hrs2 = 1;
    361.               hour1 = hoursclk(hrs2pm);
    362.               write_ds1307(0x21,Dec2Bcd(hour1));
    363.               goto TimeSet_clock;
    364.               }
    365.  
    366.             if( count2==3 && set ==0)
    367.               {
    368.               dat2 = 1;
    369.               date1=dateclk(dat2);
    370.               write_ds1307(0x22,Dec2Bcd(date1));
    371.               goto TimeSet_clock;
    372.              }
    373.  
    374.              if( count2==4 && set == 0)
    375.               {
    376.               day2 =1;
    377.               day1= dayclk(day2);
    378.               write_ds1307(0x23,Dec2Bcd(day1));
    379.               goto TimeSet_clock;
    380.               }
    381.  
    382.               if( count2==5 && set == 0)
    383.               {
    384.               mon2 = 1;
    385.               month1= monthclk(mon2);
    386.               write_ds1307(0x24,Dec2Bcd(month1));
    387.               goto TimeSet_clock;
    388.               }
    389.  
    390.               if( count2==6 && set == 0)
    391.               {
    392.               yer2 = 1;
    393.               year1= yearclk(yer2);
    394.               write_ds1307(0x25,Dec2Bcd(year1));
    395.               goto TimeSet_clock;
    396.               }
    397.  
    398.             if (count2== 0 && set==0)
    399.              {
    400.  
    401.              if(set == 0)
    402.              {
    403.               sec1= 00;
    404.               mint=read_ds1307(0x20);
    405.               hrs=read_ds1307(0x21);
    406.               dt=read_ds1307(0x22);
    407.               dy=read_ds1307(0x23);
    408.               mt=read_ds1307(0x24);
    409.               yr=read_ds1307(0x25);
    410.               }
    411.                else
    412.                 {
    413.                 sec1= read_ds1307(0x19);
    414.                 mint=read_ds1307(0x1A);
    415.                 hrs=read_ds1307(0x1B);
    416.                 dy=read_ds1307(0x1C);
    417.                 dt=read_ds1307(0x1D);
    418.                 mt=read_ds1307(0x1E);
    419.                 yr=read_ds1307(0x1F);
    420.  
    421.                 }
    422.                 write_ds1307(0X00,sec1);
    423.                 write_ds1307(0X01,mint);
    424.                 write_ds1307(0X02,hrs);
    425.                 write_ds1307(0X03,dy);
    426.                 write_ds1307(0X04,dt);
    427.                 write_ds1307(0X05,mt);
    428.                 write_ds1307(0X06,yr);
    429.                 write_ds1307(0X07,0x10);
    430.  
    431.                 lcd_clr();
    432.                msg_clock_notify();
    433.  
    434.                 Delay1s();
    435.                 goto TimeSet_clock;
    436.              }
    437.  
    438.               if(set_clock ==0)
    439.               {
    440.               lcd_clr();
    441.               goto start;
    442.  
    443.                }
    444.  
    445.  
    446.                      }
    447.  
    448.  
    449.                      ///////////////-----------------/////////////////////////
    450.                       On_Status:
    451.  
    452.  
    453.  
    454.  
    455.          for(count3 = 0; count3 <4; count3)
    456.             {
    457.               Delay500ms();
    458.              if(upcount == 0 )
    459.              {
    460.               count3+=1;
    461.               }
    462.               if(downcount == 0 )
    463.              {
    464.               count3-=1;
    465.               }
    466.  
    467.               if(count3 == 4)
    468.               {
    469.               count3 = 0;
    470.               }
    471.               lcd_clr();
    472.  
    473.               msg_s_option();
    474.               msg_switch_min_hr();
    475.  
    476.               text[0] = count3 % 10 +48 ;
    477.               Lcd_out(1, 15, text);
    478.  
    479.               if(count3==1 && set == 0)
    480.               {
    481.                   minute2 = 1;
    482.                   minute1=minuteclk(minute2) ;
    483.                   write_ds1307(0x2D,Dec2Bcd(minute1));
    484.                   goto On_Status;
    485.                }
    486.  
    487.               if( count3==2 && set == 0)
    488.               {
    489.                   hrs2 = 1;
    490.                   hour1 = hoursclk(hrs2pm);
    491.                   write_ds1307(0x2E,Dec2Bcd(hour1));
    492.  
    493.                   goto On_Status;
    494.  
    495.                }
    496.  
    497.               if(count3==3 && set == 0)
    498.               {
    499.              lcd_clr();
    500.              msg_switch_on_notify();
    501.                   write_ds1307(0x2D,00);
    502.                   write_ds1307(0x2E,00);
    503.  
    504.                   Delay1s();
    505.                   goto On_Status;
    506.                }
    507.  
    508.  
    509.               if(set_clock == 0)
    510.                {
    511.                  lcd_clr();         // Cursor off
    512.                   goto start;
    513.                 }
    514.            }
    515.  
    516.                     Off_Status:
    517.  
    518.  
    519.  
    520.  
    521. for(count4 = 0; count4 <4; count4)
    522. {
    523.               Delay500ms();
    524.              if(upcount == 0 )
    525.              {
    526.               count4+=1;
    527.               }
    528.               if(downcount == 0 )
    529.              {
    530.               count4-=1;
    531.               }
    532.               if(count4 == 4)
    533.               {
    534.               count4 = 0;
    535.               }
    536.              lcd_clr();
    537.               msg_s_option();
    538.                msg_switch_min_hr();
    539.  
    540.               text[0] = count4 % 10 +48 ;
    541.               Lcd_out(1, 15, text);
    542.  
    543.               if(count4==1 && set == 0)
    544.               {
    545.                   minute2 = 1;
    546.                   minute1=minuteclk(minute2) ;
    547.                   write_ds1307(0x2F,Dec2Bcd(minute1));
    548.                   goto Off_Status;
    549.               }
    550.              if( count4==2 && set == 0)
    551.               {
    552.                  hrs2 = 1;
    553.                  hour1 = hoursclk(hrs2);
    554.                  write_ds1307(0x30,Dec2Bcd(hour1));
    555.                  goto Off_Status;
    556.               }
    557.  
    558.  
    559.               if(count4== 3 && set == 0)
    560.               {
    561.                  lcd_clr();
    562.                 msg_switch_off_notify();
    563.                  write_ds1307(0x2F,00);
    564.                  write_ds1307(0x30,00);
    565.                   Delay1s();
    566.                  goto Off_Status;
    567.                }
    568.  
    569.  
    570.                if(set_clock == 0)
    571.               {
    572.                  lcd_clr();
    573.                  goto start;
    574.                 }
    575.            }
    576.  
    577. minute3=read_ds1307(0x2D);
    578. hour3=read_ds1307(0x2E);
    579.   minute4=read_ds1307(0x2F);
    580. hour4=read_ds1307(0x30);
    581.  
    582.  
    583.   if((minute==0x25) && (hour==0x11))//||(minute==minute4 && hour==hour4))
    584.     {
    585.       Delay200ms();
    586.       lcd_clr();
    587.       Lcd_out(1, 1, "1st SWITCH ON");
    588.        Lcd_out(2, 1, " AT SET");
    589.               //switch_status1on = 1;
    590.        // switch_status1off = 0;
    591.        switching();
    592.         if(switch_count_on<=0)
    593.         {switch_flag= 1;
    594.         }
    595.        else {switch_flag = 0;
    596.        //Delay_ms(3000);
    597.       lcd_clr();
    598.              }
    599.                       }else
    600.                       {
    601.                        switch_count_on = 0;
    602.                         }
    603.  
    604.  
    605. if((minute==minute4 && hour==hour4))
    606.   {
    607.        lcd_clr();
    608.  
    609.        switching();
    610.        Lcd_out(1, 1, "1st SWITCH OFF");
    611.         Lcd_out(2, 1, " AT SET");
    612.  
    613.       if(switch_count_off<=0)
    614.         {switch_flag= 1;
    615.         }
    616.        else {switch_flag = 0;
    617.  
    618.        delay_ms(5000);
    619.        lcd_clr();
    620.              }
    621.  
    622.    }
    623.   else {switch_count_off = 0;}
    624.                          }
    625.  
    626.  
    627.  
    628.  
    629.   }while(1);
    630.      }
    631.  
    632.      void switching()
    633.       {
    634.       if(switch_flag)
    635.       {
    636.         switch_count_on++;
    637.         switch_count_off++;
    638.       Delay200ms();
    639.       Relay1 = ~ Relay1;
    640.       eeprom_write(0x10,Relay1);
    641.       switch_flag = 0;
    642.       }
    643.       }
    644.  
    645.  
    646.  
    647.   unsigned short read_ds1307(unsigned short address )
    648. {
    649. int dat;
    650. I2C1_Start();
    651. I2C1_Wr(0xd0);
    652. I2C1_Wr(address);
    653. I2C1_Start();
    654. I2C1_Wr(0xd1);
    655. dat=I2C1_Rd(0);
    656. I2C1_Stop();
    657. return(dat);
    658. }
    659.  
    660. unsigned char BCD2UpperCh(unsigned char bcd)
    661. {
    662. return ((bcd >> 4) + '0');
    663. }
    664.  
    665. unsigned char BCD2LowerCh(unsigned char bcd)
    666. {
    667. return ((bcd & 0x0F) + '0');
    668. }
    669.  
    670. void write_ds1307(unsigned short address,unsigned short w_data)
    671. {
    672. I2C1_Start(); // issue I2C start signal
    673. //address 0x68 followed by direction bit (0 for write, 1 for read) 0x68 followed by 0 --> 0xD0
    674. I2C1_Wr(0xD0); // send byte via I2C (device address + W)
    675. I2C1_Wr(address); // send byte (address of DS1307 location)
    676. I2C1_Wr(w_data); // send data (data to be written)
    677. I2C1_Stop(); // issue I2C stop signal
    678. }
    679.  
    680.  
    681.   char minuteclk(unsigned char mint2)
    682.          {
    683.                   Lcd_Cmd(_LCD_CLEAR);               //Lcd clear
    684.                   Lcd_Cmd(_LCD_CURSOR_OFF);
    685.                   Lcd_out(1,3, "Select Minute");
    686.                   for(count5 = 0; count5 < 60; count5)
    687.                   {
    688.                     if(upcount == 0 )
    689.                     {
    690.                     count5+=1;
    691.                     }
    692.                     else if(downcount == 0 )
    693.                     {
    694.                     count5-=1;
    695.                     }
    696.                     text0[0] = count5/10 + 48;
    697.                     text0[1] = count5 % 10 +48 ;
    698.                     Lcd_out(2, 1,"Minute:");
    699.                     Lcd_out(2, 8, text0);
    700.                     Delay_ms(300);
    701.                     if( set == 0)
    702.                     {
    703.                     goto return1;
    704.                     }
    705.                      }
    706.                return1:
    707.                return count5;
    708.           }
    709.  
    710. char hoursclk(unsigned char hrs2pm)
    711.            {
    712.                 Lcd_Cmd(_LCD_CLEAR);                     //Lcd clear
    713.                 Lcd_Cmd(_LCD_CURSOR_OFF);
    714.                 Lcd_out(1,3, "Select Hours");
    715.                 for(count6 = 0; count6 < 24; count6)
    716.                   {
    717.                    if(upcount == 0 )
    718.                     {
    719.                     count6+=1;
    720.                     }
    721.                    if(downcount == 0 )
    722.                     {
    723.                     count6-=1;
    724.                     }
    725.  
    726.                     text0[0] = count6/10 + 48;
    727.                     text0[1] = count6 % 10 +48 ;
    728.                     Lcd_out(2, 1,"Hour:");
    729.                     Lcd_out(2, 6, text0);
    730.                     Delay_ms(400);
    731.                     if( set == 0)
    732.                     {
    733.                     goto return2;
    734.                     }
    735.                     }
    736.                   return2:
    737.                   return count6;
    738.  
    739.            }
    740.  
    741. char dayclk(unsigned char day2)
    742. {
    743.  
    744.                 Lcd_Cmd(_LCD_CLEAR);                   //Lcd clear
    745.                 Lcd_Cmd(_LCD_CURSOR_OFF);
    746.                 Lcd_out(1,1, "Select Day:");
    747.                 Lcd_out(2, 1, "1:Sun 2:Mon 3:");
    748.                 Lcd_out(3, -3, "Tue 4:Wed 5:Thu");
    749.                 Lcd_out(4, -3, "6:Fri 7:Sat ");
    750.                 for(count7 = 0; count7 < 8; count7)
    751.                   {
    752.                    if(upcount == 0 )
    753.                     {
    754.                     count7+=1;
    755.                     }
    756.                    if(downcount == 0 )
    757.                     {
    758.                     count7-=1;
    759.                     }
    760.                       if(count7 ==1)
    761.                       Lcd_Out(1,13,days1);
    762.                       if(count7 ==2)
    763.                       Lcd_Out(1,13,days2);
    764.                       if(count7 ==3)
    765.                       Lcd_Out(1,13,days3);
    766.                       if(count7 ==4)
    767.                       Lcd_Out(1,13,days4);
    768.                       if(count7 ==5)
    769.                       Lcd_Out(1,13,days5);
    770.                       if(count7 ==6)
    771.                       Lcd_Out(1,13,days6);
    772.                       if(count7 ==7)
    773.                       Lcd_Out(1,13,days7);
    774.                       Delay_ms(500);
    775.                       if( set == 0)
    776.                     {
    777.                     goto return2;
    778.                     }
    779.                     }
    780.                   return2:
    781.                   return count7;
    782.  
    783.                  }
    784.  
    785.  
    786. char dateclk(unsigned char dar2)
    787.          {
    788.                 Lcd_Cmd(_LCD_CLEAR);                        //Lcd clear
    789.                 Lcd_Cmd(_LCD_CURSOR_OFF);
    790.                 Lcd_out(1,3, "Select Date");
    791.                 for(count8 = 0; count8 <= 31; count8)
    792.                   {
    793.                    if(upcount == 0 )
    794.                     {
    795.                     count8+=1;
    796.                     }
    797.                    if(downcount == 0 )
    798.                     {
    799.                     count8-=1;
    800.                     }
    801.                     text0[0] = count8/10 + 48;
    802.                     text0[1] = count8 % 10 +48 ;
    803.                     Lcd_out(2, 1,"Date:");
    804.                     Lcd_out(2, 6, text0);
    805.                     Delay_ms(400);
    806.                     if( set == 0)
    807.                     {
    808.                     goto return3;
    809.                     }
    810.                     }
    811.                     return3:
    812.                     return count8;
    813.                  }
    814.  
    815. char monthclk(unsigned char mon2)
    816.          {
    817.                 Lcd_Cmd(_LCD_CLEAR);                      //Lcd clear
    818.                 Lcd_Cmd(_LCD_CURSOR_OFF);
    819.                 Lcd_out(1,3, "Select Month");
    820.                 for(count9 = 0; count9 < 13; count9)
    821.                   {
    822.                    if(upcount == 0 )
    823.                     {
    824.                     count9+=1;
    825.                     }
    826.                    if(downcount == 0 )
    827.                     {
    828.                     count9-=1;
    829.                     }
    830.                     text0[0] = count9/10 + 48;
    831.                     text0[1] = count9 % 10 +48 ;
    832.                     Lcd_out(2, 1,"Month:");
    833.                     Lcd_out(2, 7, text0);
    834.                     Delay_ms(500);
    835.                     if( set == 0)
    836.                     {
    837.                     goto return4;
    838.                     }
    839.                     }
    840.                      return4:
    841.                      return count9;
    842.                  }
    843.  
    844. char yearclk(unsigned char yr2)
    845. {
    846.                 Lcd_Cmd(_LCD_CLEAR);                 //Lcd clear
    847.                 Lcd_Cmd(_LCD_CURSOR_OFF);
    848.                 Lcd_out(1,3, "Select Year");
    849.                 for(count10 = 0; count10 <= 99; count10)
    850.                   {
    851.                    if(upcount == 0 )
    852.                     {
    853.                     count10+=1;
    854.                     }
    855.                    if(downcount == 0 )
    856.                     {
    857.                     count10-=1;
    858.                     }
    859.                     text0[0] = count10/10 + 48;
    860.                     text0[1] = count10 % 10 +48 ;
    861.                     Lcd_out(2, 1,"Year:");
    862.                     Lcd_out(2, 7, text0);
    863.                     Delay_ms(500);
    864.                     if( set == 0)
    865.                     {
    866.                     goto return5;
    867.                     }
    868.                     }
    869.                   return5:
    870.                   return count10;
    871.                  }
    872.  
    873.                  void Delay2ms(void)
    874.                  {
    875.                  delay_ms(2);
    876.                  }
    877. void Delay200ms(void)
    878. {
    879.                  delay_ms(200);
    880.                  }
    881. void Delay500ms(void)
    882. {
    883.                  delay_ms(500);
    884.                  }
    885. void Delay1s(void)
    886. {
    887.                  delay_ms(1000);
    888.                  }
    889.  
    890.  
    891. void Delay4s(void)
    892.                   {
    893.                  delay_ms(4000);
    894.                  }
    895.                  void lcd_clr(void)
    896. {
    897. Lcd_Cmd(_LCD_CLEAR);                 //Lcd clear
    898.   Lcd_Cmd(_LCD_CURSOR_OFF);
    899. }
    900.  
    901. void msg_welcome(void)
    902. {Lcd_Out(1,1,"WELCOME ");
    903.  
    904. }
    905. void msg_setmenu(void)
    906. {
    907.   Lcd_out(1, 3, "SETTING MENU");
    908.   Lcd_out(2, 1, "Clock & Calender");
    909. }
    910. void msg_s_option(void)
    911. {
    912.   Lcd_out(1,1, "SELECT OPTION:");
    913. }
    914. void msg_setclock(void)
    915. {
    916.   Lcd_out(1,1, "Set Clock & Date");
    917. }
    918. void msg_clock(void)
    919. {
    920. Lcd_out(1, 1, "1:Minute 2:Hour");
    921. Lcd_out(2, 1, "3:Date 4:Weekday");
    922. }
    923. void msg_calendar(void)
    924. {
    925. Lcd_out(1, 1, "5:Month 6:Year");
    926. Lcd_out(2, 1, "Select Option:");
    927. }
    928. void msg_clock_notify(void)
    929. {
    930.   Lcd_out(1, 1,"Clock is set");
    931. }
    932. void msg_switch_min_hr(void)
    933. {
    934.   Lcd_out(2,1,"1:S1-Min 2:S1-Hr");
    935. }
    936. void msg_switch_on_notify(void)
    937. {
    938. Lcd_out(1,2,"Switch On time");
    939. Lcd_out(2,3,"Disabled");
    940. }
    941. void msg_switch_off_notify(void)
    942. {
    943. Lcd_out(1,1,"Switch off time");
    944. Lcd_out(2,1,"Disabled");
    945. }
    946. void msg_on_time(void)
    947. {
    948. Lcd_out(1,2, "Select Switch");
    949. Lcd_out(2,2, "On Time");
    950. }
    951. void msg_off_time(void)
    952. {
    953. Lcd_out(1,2, "Select Switch");
    954. Lcd_out(2,2, "Off Time");
    955. }
     
  2. ErnieM

    AAC Fanatic!

    Apr 24, 2011
    7,387
    1,605
    Asking for help by splashing a huge program with several vague symptoms isn't going to get you very far.

    Splicing out a small section that demonstrates a problem will lead to better results.
     
Loading...