نمایش نتایج 1 تا 3 از 3

نام تاپیک: 8051

  1. #1

    8051

    سلام دوستان
    من در حال حاضر دارم با 8051 کار میکنم.میکرو من AT89C51 است و با پورت سریال کار می کنم قراره در این برنامه دو بایت داده که از PC میرسه در دو خانه متوالی حافظه ذخیره بشه.(برنامه PC با سی نوشته شده) حالا من می خوام ببینم داده درست رسیده یا نه؟توی برنامه زیر سابروتینهای مربوطه رو نوشتم بنظر من باید درست کار کنه ولی وقتی در برنامه اصلی (که قسمتیشو اینجا نوشتم) سابروتین تبدیل هگز به دسیمال و سابروتین display را فراخوانی می کنم مقداری رو که روی lcd نمایش میده درست نیست یعنی با مقداری که از کامپیوتر فرستاده میشه مطابقت نداره و البته یه مقدار ثابته.من خیلی باهاش ور رفتم ولی درست نشد بنظر شما مشکل از کجاست؟
    (ارسال به این صورته که کامپیوتر اغاز ارسال را با فرستادن s اطلاع میده و میکرو R0 رو با ادرس 08 بار میکنه بایت بعدی که ارسال میشه 4 بیت پایینش low byte داده است و 4 بیت بالاش 1000 بایت بعدی 4 بیت پایینش high byte داده و 4 بیت بالاش 1000 است و پایان ارسال با فرستادن E اعلام میشه.توی سابروتین وقفه بایت اول داده توی ادرسی که R0 بهش اشاره میکنه ذخیره میشه و مقدار R0 یکی اضافه میشه و بایت بعدی هم به همین صورت.وقتیE ارسال شد سابروتین convert فراخوانی میشه وداده به شکل اولش تبدیل میشه و در R7 از بانک یک ذخیره میشه.حالا مشکل اینجاست که درست نمایش داده نمیشه)
    البته سابروتین display درست کار می کنه.
    میدونم طولانی شد ولی لطفا وقت بذارید و اگه میتونید راهنمایی کنید (من که خیلی کلافه شدم)

    SETB PSW.3
    MOV A,R7
    CLR PSW.3 قسمتی از برنامه اصلی
    ACALL HEXTODEC
    ACALL DISPLAY
    SJMP AGAIN
    ******************************************subrouti n 1**************
    HEXTODEC:
    MOV B,#10
    DIV AB
    MOV R5,B
    MOV B,#10
    DIV AB
    ORL A,#30H
    MOV R7,A
    MOV A,B
    ORL A,#30H
    MOV R6,A
    MOV A,R5
    ORL A,#30H
    MOV R5,A
    RET
    ***************************************** subroutin 2 ********
    DISPLAY:

    again1:
    MOV A,#38H
    ACALL COMMAND
    MOV A,#0EH
    ACALL COMMAND
    MOV A,#01H
    ACALL COMMAND
    MOV A,#06H
    ACALL COMMAND
    MOV A,#86H
    ACALL COMMAND
    MOV A,R7
    ACALL DATA_DISPLAY
    MOV A,R6
    ACALL DATA_DISPLAY
    MOV A,R5
    ACALL DATA_DISPLAY
    RET
    COMMAND: ACALL READY
    MOV P1,A
    CLR P3.2
    CLR P3.3
    SETB P3.6
    CLR P3.6
    RET
    DATA_DISPLAY:
    ACALL READY
    MOV P1,A
    SETB P3.2
    CLR P3.3
    SETB P3.6
    CLR P3.6
    RET
    READY: SETB P1.7
    CLR P3.2
    SETB P3.3
    BACK1: CLR P3.6
    SETB P3.6
    JB P1.7,BACK1
    RET

    ******************************************subrouti n 3 ***********
    CONVERT:
    MOV R0,#08H
    MOV A,@R0
    ANL A,#0FH
    MOV @R0,A
    INC R0
    MOV A,@R0
    ANL A,#0FH
    SWAP A
    DEC R0
    ORL A,@R0
    SETB PSW.3
    MOV R7,A
    CLR PSW.3
    ACALL HEXTODEC
    ACALL DISPLAY
    RET







    ;******************************************SERIAL ISR**************
    SERIAL_ISR:
    JB TI,TRANS
    MOV A,SBUF
    CLR RI
    CJNE A,#'S',TEST
    MOV R0,#08H
    MOV SBUF,#'S'
    JMP BACK4
    TEST: CJNE A,#'E',BACK2
    ACALL CONVERT
    JMP BACK4
    BACK2: MOV R1,A
    ANL A,#0F0H
    CJNE A,#80H,BACK4
    MOV A,R1
    MOV @R0,A
    INC R0
    BACK4: RETI

    TRANS:
    CLR TI
    SETB P3.7
    RETI
    END

  2. #2
    عددی که از کامپیوتر در یافت میکنی برای نمایش روی lcd باید کد ascii اش را بفرستی نه خودش را :)
    بعدم برای چک کردن برنامه ات اول از یک Emoulator استفاده کن مثل proteus از ISIS که قابلیت بار کردن hex فایل به میکرو را هم دارد.
    مشکلی بود تماس بگیر(mail)

  3. #3
    سلام
    ممنون از راهنماییتون ولی مشکل حل شد. مسایلی که گفتینو رعایت کرده بودم مشکل از برنامه اسمبلی نبود از برنامه ای بود که روی pc اجرا میشد

تاپیک های مشابه

  1. 8051
    نوشته شده توسط benyamin_pc در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 7
    آخرین پست: جمعه 10 فروردین 1386, 07:27 صبح
  2. پروژه 8051
    نوشته شده توسط paymanonline در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 3
    آخرین پست: پنج شنبه 04 خرداد 1385, 15:54 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •