اطلاعیه

Collapse
No announcement yet.

ایجاد تنظیم زنگ در ساعت

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ایجاد تنظیم زنگ در ساعت

    سلام دوستان.
    من یه برنامه ساعت با avr و سون سگمنت دارم. می خوام در برنامه وقتی به یه ساعت خاصی که خودم تعریف کرده ام برام زنگ بزنه. کل برنامه رو گذاشتم. باید چکار کنم؟

    کل برنامه با فایل پروتوس هم گذاشتم.
    لطفا کمکم کنید.

    http://www.uplooder.net/cgi-bin/dl.c...ed4b1a3b54df36
    کد:
    [left]$regfile "m32def.dat"
    $crystal = 8000000
    
    'Config Lcd = 16 * 2
    'Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
    '***************************************
    '********* EBRAHIM KHAVANINZADEH********
    '********* http://ebka.persianblog.ir***
    '**********09373663936******************
    
    Config Sda = Portc.1
    Config Scl = Portc.0
    
    Const Ds1307w = &HD0
    Const Ds1307r = &HD1
    
      Config Portc.5 = Output , Portc.6 = Output
      Config Portb = Output : Config Portd = Output
       Ddrc.2 = 0 : Ddrc.3 = 0 : Ddrc.4 = 0         ': Ddrc.5 = 1 : Ddrc.6 = 1
            : Dim N As Byte , _wait As Byte
          A Alias Portd.0 : B Alias Portd.1 : C Alias Portd.2 : D Alias Portd.3
           E Alias Portd.4 : F Alias Portd.5 : G Alias Portd.6 : H Alias Portd.7
            One Alias Portc.5 : Two Alias Portc.6
    
             : Dim _hour As Byte , _minet As Byte , _sece As Byte , X As Byte ,
                : Dim Day As Byte , Week As Byte , Mon As Byte , Yaer As Word , Year As Word
     Cursor Off
                      : Dim _min(3) As Byte , Hour(3) As Byte , Sece(3) As Byte , _day(3) As Byte , _mon(3) As Byte
    Shoro:
    _wait = 5
      Cls
    
    
     Do
    
    Gosub _data
    Gosub Taghsim
    Gosub Segment
    If Pinc.3 = 0 Then Jmp Tanzim
    
    'Home
    'Lcd Hour(1) ; Hour(3) ":" ; _min(1) ; _min(3)
     Loop
    
     Ebi:
     'Data 63 , 6 , 91 , 79 , 102 , 109 , 125 , 7 , 127 , 111
     Data 126 , 48 , 109 , 121 , 51 , 91 , 95 , 112 , 127 , 123
     'Data &B01111110 , &B00110000 , &B01101101 , &B01111001 , &B00110011 , &B01011011 , &B01011111 , &B01110000 , &B01111111 , &B01111011
    Segment:
    
    Set Two : Reset One : Portd = &B11111110
      Portb = Lookup(_mon(1) , Ebi)
       Waitms _wait
            : Portd = &B11111101
         Portb = Lookup(_mon(3) , Ebi)
          Waitms _wait
                : Portd = &B11111011
             Portb = Lookup(_day(1) , Ebi)
              Waitms _wait
                   : Portd = &B11110111
               Portb = Lookup(_day(3) , Ebi)
                Waitms _wait
    
     Set One : Reset Two : E = 0 : F = 1 : G = 1 : H = 1    ' Portd = &B11100000
      Portb = Lookup(hour(1) , Ebi)
       Waitms _wait
            : E = 1 : F = 0 : G = 1 : H = 1       'Portd = &B11010000
         Portb = Lookup(hour(3) , Ebi)
          Waitms _wait
                : E = 1 : F = 1 : G = 0 : H = 1   ' Portd = &B10110000
             Portb = Lookup(_min(1) , Ebi)
              Waitms _wait
                   : E = 1 : F = 1 : G = 1 : H = 0    'Portd = &B01110000
               Portb = Lookup(_min(3) , Ebi)
                Waitms _wait
    
    
    
     'Set Two : Reset One : Portd = &B11111110
    '  Portb = Lookup(n , Ebi)
    '  Incr N : If N > 9 Then N = 0
    '  Waitms 400
    
      Return
    
     Zaman:
     If _hour > 23 And _hour < 25 Then _hour = 0
     If _hour < 0 Or _hour > 254 Then _hour = 23
     If _minet > 59 And _minet < 61 Then _minet = 0
     If _minet > 254 Or _minet < 0 Then _minet = 59
     If Mon > 12 Then Mon = 1
     If Mon < 1 Then Mon = 12
     If Day > 31 Then Day = 1
     If Year > 2020 Then Year = 2012
     If _sece > 59 And _sece < 61 Then _sece = 0
     If _sece > 254 Or _sece < 0 Then _sece = 59
     If _minet > 60 Then _sece = 0
     'If Year > 60 Then _sece = 0
     ' If _sece > 60 Then _sece = 0
     Return
    
    
    
    
    Taghsim:
    '------------------------------
     _min(1) = _minet / 10
     _min(2) = _min(1) * 10
     _min(3) = _minet - _min(2)
    '------------------------------
     Hour(1) = _hour / 10
     Hour(2) = Hour(1) * 10
     Hour(3) = _hour - Hour(2)
    '---------------------------
     _day(1) = Day / 10
     _day(2) = _day(1) * 10
     _day(3) = Day - _day(2)
    '------------------------------
     _mon(1) = Mon / 10
     _mon(2) = _mon(1) * 10
     _mon(3) = Mon - _mon(2)
    '---------------------------
     Return
    
     _data:
     I2cstart
     I2cwbyte Ds1307w
     I2cwbyte 0
     I2cstart
     I2cwbyte Ds1307r
     I2crbyte _sece , Ack
     I2crbyte _minet , Ack
     I2crbyte _hour , Ack
     I2crbyte Week , Ack
     I2crbyte Day , Ack
     I2crbyte Mon , Ack
     I2crbyte Year , Nack
     I2cstop
    
     _sece = Makedec(_sece) : _minet = Makedec(_minet) : _hour = Makedec(_hour)
     Week = Makedec(week) : Day = Makedec(day) : Mon = Makedec(mon) : Year = Makedec(year)
     If _minet > 59 Then _minet = 0
     If _hour > 23 Then _hour = 0
    
     Return
     Tanzim:
     Portd = &B11111111
     While Pinc.3 = 0
     Wend
     Do
     If Pinc.2 = 0 Then : Waitms 200 : Incr _hour
     Elseif Pinc.4 = 0 Then : Waitms 200 : Decr _hour
     Elseif Pinc.3 = 0 Then : Jmp Daghighe : End If
     Gosub Zaman
     Gosub Taghsim
    
    
     Set One : Reset Two : Portd = &B11100000          ': E = 0 : F = 1 : G = 1 : H = 1    '
      Portb = Lookup(hour(1) , Ebi)
       Waitms _wait
        Portd = &B11010000                  ': E = 1 : F = 0 : G = 1 : H = 1          '
         Portb = Lookup(hour(3) , Ebi)
          Waitms _wait
    
     'Gosub Segment
    
     Loop
    
    Daghighe:
       Portd = &B11111111
     While Pinc.3 = 0
     Wend
     Do
     If Pinc.2 = 0 Then : Waitms 200 : Incr _minet
     Elseif Pinc.4 = 0 Then : Waitms 200 : Decr _minet
     Elseif Pinc.3 = 0 Then : Jmp Mah : End If
      Gosub Zaman
     Gosub Taghsim
    
      Set One : Reset Two : Portd = &B10110000         ' E = 1 : F = 1 : G = 0 : H = 1             '
             Portb = Lookup(_min(1) , Ebi)
              Waitms _wait
               Portd = &B01110000           ' : E = 1 : F = 1 : G = 1 : H = 0   '
               Portb = Lookup(_min(3) , Ebi)
                Waitms _wait
    
     Loop
    
     Mah:
     While Pinc.3 = 0
     Wend
     Do
    
     If Pinc.2 = 0 Then : Waitms 200 : Incr Mon
     Elseif Pinc.4 = 0 Then : Waitms 200 : Decr Mon
     Elseif Pinc.3 = 0 Then : Jmp Roz : End If
      Gosub Zaman
     Gosub Taghsim
    
    
    Set Two : Reset One : Portd = &B11111110
      Portb = Lookup(_mon(1) , Ebi)
       Waitms _wait
            : Portd = &B11111101
         Portb = Lookup(_mon(3) , Ebi)
          Waitms _wait
     Loop
    
    
     Roz:
     While Pinc.3 = 0
     Wend
     Do
    
     If Pinc.2 = 0 Then : Waitms 200 : Incr Day
     Elseif Pinc.4 = 0 Then : Waitms 200 : Decr Day
     Elseif Pinc.3 = 0 Then : Jmp Save : End If
      Gosub Zaman
     Gosub Taghsim
    
    
    
    
     Set Two : Reset One : Portd = &B11111011
             Portb = Lookup(_day(1) , Ebi)
              Waitms _wait
                   : Portd = &B11110111
               Portb = Lookup(_day(3) , Ebi)
                Waitms _wait
    
     Loop
     Save:
    
     For X = 0 To 20
    
      Set One : Reset Two : Portd = &B11100000         ': E = 0 : F = 1 : G = 1 : H = 1    '
      Portb = &B1011011                    'S
       Waitms _wait
        Portd = &B11010000                  ': E = 1 : F = 0 : G = 1 : H = 1          '
         Portb = &B1110111                 'A
          Waitms _wait
    
          : Portd = &B10110000              ' E = 1 : F = 1 : G = 0 : H = 1             '
             Portb = &B0111110             'V
              Waitms _wait
               Portd = &B01110000           ' : E = 1 : F = 1 : G = 1 : H = 0   '
               Portb = &B1001111           'E
                Waitms _wait
    
      Set Two : Reset One : Portd = &B11111110
      Portb = &B1011011
       Waitms _wait
            : Portd = &B11111101
         Portb = &B1110111
          Waitms _wait
                : Portd = &B11111011
             Portb = &B0111110
              Waitms _wait
                   : Portd = &B11110111
               Portb = &B1001111
                Waitms _wait
      Next
      Portb = 0 : Portd = 1
    
    
    
    
     _sece = Makebcd(_sece) : _minet = Makebcd(_minet) : _hour = Makebcd(_hour)
     I2cstart
     I2cwbyte Ds1307w
     I2cwbyte 0
     I2cwbyte _sece
     I2cwbyte _minet
     I2cwbyte _hour
     I2cstop
     Waitms 200
     Year = Makebcd(year) : Mon = Makebcd(mon) : Day = Makebcd(day)
     I2cstart
     I2cwbyte Ds1307w
     I2cwbyte 4
     I2cwbyte Day
     I2cwbyte Mon
     I2cwbyte Year
     I2cstop
     Goto Shoro[/left]
لطفا صبر کنید...