اطلاعیه

Collapse
No announcement yet.

سوای برنامه نویسی تابلو

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

    سوای برنامه نویسی تابلو

    عزیزان عظیم یه کمکی به ما کنین و به این چند تا سول من جواب بدین در این برنامه


    '----------------------------------------------------------
    '----------------------------------------------------------
    ' LED based Digital Clock
    ' By: Reza Sepas Yar (reza@avr.ir)
    ' Revision: 1.0
    '----------------------------------------------------------
    '----------------------------------------------------------

    $regfile = "M32def.dat"
    $crystal = 12000000

    Dim Iloop As Word
    Dim Row As Word
    Dim Index As Word
    Dim A As Word
    Dim N As Word
    Dim K As Word

    Dim Ar1(512) As Byte
    Dim Strg1 As String * 2
    Dim Strg2 As String * 2
    Dim Strg3 As String * 2
    Dim Strg As String * 12

    Dim Digits(12) As Byte At Strg Overlay

    Ddra = &B11110000
    Ddrb = 255
    Ddrc = 255
    Ddrd = 255

    Config Scl = Porta.0
    Config Sda = Porta.1

    Const Ds1307w = &HD0
    Const Ds1307r = &HD1

    Dim _sec As Byte , _min As Byte , _hour As Byte
    Dim _day As Byte , _month As Byte , _year As Byte
    Dim Weekday As Byte , _min1 As Byte , _hour1 As Byte
    Dim _weekday As Byte

    '------------------------------------------------------------------------------------------

    Do

    Gosub Getdatetime

    Gosub Getdatetime
    Strg1 = Bcd(_sec)
    Strg2 = Bcd(_min)
    Strg3 = Bcd(_hour)

    Strg = Strg3 + ":" + Strg2 + ":" + Strg1

    A = 1
    For Iloop = 1 To 8
    Gosub Filling
    For K = 1 To 8
    Read Ar1(a)
    Incr A
    Next
    Next

    For N = 1 To 100

    For Row = 0 To 7

    Portd = Ar1(1 + Row)
    Set Portc.0
    nop
    Reset Portc.0

    Portd = Ar1(9 + Row)
    Set Portc.1
    nop
    Reset Portc.1

    Portd = Ar1(17 + Row)
    Set Portc.2
    nop
    Reset Portc.2

    Portd = Ar1(25 + Row)
    Set Portc.3
    nop
    Reset Portc.3

    Portd = Ar1(33 + Row)
    Set Portc.4
    nop
    Reset Portc.4

    Portd = Ar1(41 + Row)
    Set Portc.5
    nop
    Reset Portc.5

    Portd = Ar1(49 + Row)
    Set Porta.5
    nop
    Reset Porta.5

    Portd = Ar1(57 + Row)
    Set Porta.6
    nop
    Reset Porta.6

    Reset Portb.row
    Waitms 1
    Set Portb.row

    Next

    Next

    Loop

    '------------------------------------------------------------------------------------------

    Filling:

    Select Case Digits(iloop)

    Case 32 : Gosub Space_char
    Case 46 : Gosub Dot_char
    Case 47 : Gosub Forward_char
    Case 48 : Gosub 0_char
    Case 49 : Gosub 1_char
    Case 50 : Gosub 2_char
    Case 51 : Gosub 3_char
    Case 52 : Gosub 4_char
    Case 53 : Gosub 5_char
    Case 54 : Gosub 6_char
    Case 55 : Gosub 7_char
    Case 56 : Gosub 8_char
    Case 57 : Gosub 9_char
    Case 58 : Gosub Colon_char

    Case Else : Gosub Space_char

    End Select

    Return

    '------------------------------------------------------------------------------------------

    Space_char:
    Restore Space_dta
    Return

    Dot_char:
    Restore Point_dta
    Return

    Forward_char:
    Restore Division_dta
    Return

    0_char:
    Restore 0_dta
    Return

    1_char:
    Restore 1_dta
    Return

    2_char:
    Restore 2_dta
    Return

    3_char:
    Restore 3_dta
    Return

    4_char:
    Restore 4_dta
    Return

    5_char:
    Restore 5_dta
    Return

    6_char:
    Restore 6_dta
    Return

    7_char:
    Restore 7_dta
    Return

    8_char:
    Restore 8_dta
    Return

    9_char:
    Restore 9_dta
    Return

    Colon_char:
    Restore Colon_dta
    Return

    '-------------------------------------------------------------------------------

    Getdatetime:
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0

    I2cstart
    I2cwbyte Ds1307r
    I2crbyte _sec , Ack
    I2crbyte _min , Ack
    I2crbyte _hour , Ack
    I2crbyte Weekday , Ack
    I2crbyte _day , Ack
    I2crbyte _month , Ack
    I2crbyte _year , Nack
    I2cstop
    _min1 = Makedec(_min)
    _hour1 = Makedec(_hour)

    Return



    Setdate:
    _day = Makebcd(_day)
    _month = Makebcd(_month)
    _year = Makebcd(_year)
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 3
    I2cwbyte _weekday
    I2cwbyte _day
    I2cwbyte _month
    I2cwbyte _year
    I2cstop
    Return

    Settime:
    _sec = Makebcd(_sec)
    _min = Makebcd(_min)
    _hour = Makebcd(_hour)
    I2cstart
    I2cwbyte Ds1307w
    I2cwbyte 0
    I2cwbyte _sec
    I2cwbyte _min
    I2cwbyte _hour
    I2cstop
    Return

    End

    '------------------------------------------------------------------------------------------
    Space_dta:
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00

    Point_dta:
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H18 , &H18 , &H00

    Division_dta:
    Data &H06 , &H0C , &H18 , &H30 , &H60 , &HC0 , &H80 , &H00

    0_dta:
    Data &H7C , &HCE , &HDE , &HF6 , &HE6 , &HC6 , &H7C , &H00

    1_dta:
    Data &H30 , &H70 , &H30 , &H30 , &H30 , &H30 , &HFC , &H00

    2_dta:
    Data &H78 , &HCC , &H0C , &H38 , &H60 , &HCC , &HFC , &H00

    3_dta:
    Data &H78 , &HCC , &H0C , &H38 , &H0C , &HCC , &H78 , &H00

    4_dta:
    Data &H1C , &H3C , &H6C , &HCC , &HFE , &H0C , &H1E , &H00

    5_dta:
    Data &HFC , &HC0 , &HF8 , &H0C , &H0C , &HCC , &H78 , &H00

    6_dta:
    Data &H38 , &H60 , &HC0 , &HF8 , &HCC , &HCC , &H78 , &H00

    7_dta:
    Data &HFC , &HCC , &H0C , &H18 , &H30 , &H30 , &H30 , &H00

    8_dta:
    Data &H78 , &HCC , &HCC , &H78 , &HCC , &HCC , &H78 , &H00

    9_dta:
    Data &H78 , &HCC , &HCC , &H7C , &H0C , &H18 , &H70 , &H00

    Colon_dta:
    Data &H00 , &H18 , &H18 , &H00 , &H00 , &H18 , &H18 , &H00

    nop یعنی چه
    Restore Space_dta یعنی جه
    _sec = Makebcd(_sec) یعنی جه
    ic ds1307 کارش چیه
    oo: :angry: oo: :angry: oo: :angry: oo: :angry:
    انجام پروژه های برنامه نویسی اندروید
    [glow=red,2,300]نرم افزار نقشه های پاور کامپیوتر اندورید[/glow]
    http://cafebazaar.ir/app/?id=com.atxdroid

    #2
    پاسخ : سوای برنامه نویسی تابلو

    سلام
    nop به اندازه یک سیکل تاخیر ایجاد می کند. یعنی همان Waitus خودمون

    تراشه DS1307 یک تراشه برای ذخیره کردن تاریخ و زمان می باشد که از رابط I2C باید برای تبادل اطلاعات آن استفاده کرد.

    _sec = Makebcd(_sec) مقدار یک متغیر را به BCD تبدیل می کند که این کار بیشتر برای تراشه DS1307 یا هر نوع تراشه ساعت دیگر که با پروتکل I2C کار کند استفاده می شود.

    Restore Space_dta به این خط برنامه اشاره دارد:
    Space_dta:
    Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00 , &H00
    هرکه خود را یک بار با اشکهایش شستشو دهد تا زنده است پاک و مقدس میماند

    دیدگاه

    لطفا صبر کنید...
    X