عرض مع لوحة المفاتيح

S

scmael

Guest
أصدقائي الأعزاء أنا بحاجة لمساعدة ولدي مشروع pic16c74 اليوم قد يكون من الصعب جدا العثور على ومكلفة للغاية كيف تحل محل pic16f877 Pinout هو نفسه.

؛************************************************* *************
؛ الكاتب HAYSSAM سرحان *
؛ حقوق النشر الرئيسية التصميمات -- 961 9 221737 *
* ؛
؛ العنوان رامي سرحان *
؛ جيم / م HAYSSAM سرحان *
؛ الجامعة الأميركية في بيروت *
؛ صندوق البريد : 11-0236/F6 *
؛ بيروت *
؛ * لبنان
* ؛
تاريخ 28.7.97 *
؛ ملف حفظ DISPLAY.ASM *
وبالنسبة لرفع PIC16C74 WDT = س = رفع *
؛ الساعة 18.00 ميغاهرتز الرنان *
؛************************************************* *************

تحت عنوان "DISPLAY.ASM -- لوحة مفاتيح جهاز الكمبيوتر RTCLOCK LCD EEPROM التفاعل عرض"

قائمة (ف = 16C74
؛
؛ الأجهزة الإعداد

؛ ميناء الإعداد
؛ LCD مراقبة الخطوط
؛ RA4 = جمهورية صربسكا (سجل اختر)
؛ RA5 = هاء) يتيح لل)
؛ LCD خطوط بيانات
؛ جمهورية أرمينيا <3 : 0>

؛ باء بورت الإعداد
؛ التفاعل بين لوحة مفاتيح الكمبيوتر
؛ RB0/INT = ساعة إشارة لوحة المفاتيح
؛ RB1 = بيانات إشارة لوحة المفاتيح
البيانات اختيار مجلس
؛ RB2 = CS0
؛ RB3 = CS1
؛ RB4 = CS2
؛ RB5 = CS3
؛ RB6 = CS4
؛ RB7 = CS5

؛ جيم بورت الإعداد
؛ RC0 = المراكز ومراقبة الخطوط
؛ RC1 = المراكز الأول / م
؛ RC2 = المراكز على مدار الساعة
؛ الإشارات إلى التحول سجل
؛ RC3 = CLK إشارة إلى التحول سجل
؛ RC6 بيانات = إشارة إلى تحول سجل
؛ RC4 = قطع غيار
؛ RC5 = قطع غيار
؛ RC7 = قطع غيار؛ مد بورت الإعداد
؛ لعرض مخرجات البيانات
؛ والبيان العملي <7 : 0>

؛ هاء بورت الإعداد
؛ EEPROM التفاعل
؛ RE0 = SCL
؛ RE1 = حزب العمل الديمقراطي
؛ RE2 = قطع غيار

يتضمن <P16C74.INC>
؛
؛------------------------------------------------- ---------------------------
؛ سجل ملف الاحالة
؛------------------------------------------------- ---------------------------

؛ الصناعات القراءة والكتابة DS1302 ريال للساعة
؛ السجلات.ويسمح أيضا للقراءة وكتابة مجموعة من 31 حرفا
؛ الذاكرة من / المراكز والمنظمات غير المتقلبة البيانات المجال.

؛ ميناء الاحالة

LCD_DATA EQU بورتا ؛ LCD البيانات على انخفاض 4 - معاهدات الاستثمار الثنائية
LCD_DATA_TRIS EQU TRISA ؛ تريس التسجيل للبيانات LCD
LCD_CNTL EQU بورتا اثنان ضوابط الخطوط
هاء EQU 5 ؛ LCD يتيح خط السيطرة
جمهورية صربسكا EQU 4 ؛ LCD) سجل اختر خط السيطرة

؛ باء بورت الاحالة

KEYPOR EQU PORTB ؛ PORTB
RB1 EQU 1
CS0 EQU 2
CS1 EQU 3
CS2 EQU 4
CS3 EQU 5
CS4 EQU 6
CS5 EQU 7

؛ جيم بورت الاحالة

RTCRES EQU 0 ؛ المراكز ومراقبة الخطوط
RTCIO EQU 1 ؛ المراكز الأول / م
RTCCLK EQU 2 ؛ المراكز على مدار الساعة
ISPCLK EQU 3 ؛ تحول مسلسلا) سجل على مدار الساعة
ISPDAT EQU 6 ؛ تحول مسلسلا سجل ادخال البيانات

؛ مد بورت الاحالة
DISPDAT EQU PORTD

؛ هاء بورت الاحالة

SCL EQU.0 ؛ EEROM الساعة بت
حزب العمل الديمقراطي EQU.1 ؛ EEROM بت من البيانات
SDPORT EQU الإمبراطورية العثمانية ؛ EEROM بيانات الميناء
SCPORT EQU الإمبراطورية العثمانية ؛ EEROM الميناء على مدار الساعة

تحول EQU.1
الرئيسية EQU.2
بيغ EQU.6
مرحبا EQU.7

؛ متغير الاحالة

GP1 EQU 0x20 ؛ الاستعمال العام السجلات
ال GP2 EQU GP1 1
FSRCOPY EQU ال GP2 1 ؛ نسخة FSR
مسلسلا EQU FSRCOPY 1 ؛ الاشتراك في سباق الجائزة الكبرى لتحويل إلخ.

؛ ********** ريال ساعة تسجيل نسخة ****

RTCD EQU مسلسلا 1 ؛ أيام
RTCH EQU RTCD 1 ؛ ساعة
RTCM EQU RTCH 1 ؛ دقيقة
التدريب الريفية EQU RTCM 1 ؛ ثانية

WCOPY EQU التدريب الريفية 1 ؛ صورة دبليو دفع سجل في تقاطع
SCOPY EQU WCOPY 1 ؛ صورة عن السجل في مركز تقاطع دفع
PCOPY EQU SCOPY 1 ؛ صورة pclath في دفع يقاطع
علم EQU PCOPY 1 ؛ الغرض العام العلم بت هنا
KEYVAL EQU العلم 1 ؛ المستعملة لتشكيل الرئيسية مدونة

؛ ********** مسلسلا EEPROM سجل ***********

عد EQU KEYVAL 1

EESER EQU العد 1
EEPAGE EQU EESER 1 ؛ الصفحة رقم
EEBYTE EQU EEPAGE 1 ؛ بايت مضادة
EESTART EQU EEBYTE 1 ؛ eerom بدء معالجة ضعف في الخانة
EECOUNT EQU EESTART 1 ؛ القطعة عندما يتحول الفرز
رابطة العمل المنصف EQU EECOUNT 1 ؛ منوعات العلم بتة
STRCOM EQU رابطة العمل المنصف 1 ؛ EEROM صفحة / معالجة نقاط

؛ **************** المراكز الوسيطة سجل *******

MSDH1 EQU STRCOM 1
LSDH1 EQU MSDH1 1
MSDM1 EQU LSDH1 1
LSDM1 EQU MSDM1 1
MSDS1 EQU LSDM1 1
LSDS1 EQU MSDS1 1

؛ **************** لوحة مفاتيح جهاز الكمبيوتر سجل ************

NBITS EQU LSDS1 1
NBYTES EQU NBITS 1
KEYTEMP EQU NBYTES 1
LASTKEY EQU KEYTEMP 1
KEYBUFF EQU LASTKEY 1
FLAG1 EQU KEYBUFF 1
KTMP EQU FLAG1 1
BLL EQU KTMP 1

؛ ************** المراكز والاستعمال العام) سجل ******

MSD EQU BLL 1 ؛ الحرارة.السجل معظم مهم
؛ الأصبع بن لتحويل أرقام عشرية بشكل رقمي
LSD EQU MSD 1 ؛ المؤقت السجل ، يعقد أقلها أهمية
؛ الأصبع بن لتحويل أرقام عشرية بشكل رقمي
الحرارة EQU LSD 1 ؛ سجل المؤقت
تشار EQU الحرارة 1 ؛ المؤقت السجل ،
EQU دولارا تشار 1 ؛
شعبة الدعم التقني EQU دولارا 1 ؛
MSDH EQU شعبة الدعم التقني 1
MSDM EQU MSDH 1
MSDS EQU MSDM 1
LSDH EQU MSDS 1
LSDM EQU LSDH 1
LSDS EQU LSDM 1

؛*************** الاستعمال العام) سجل ***********

EECH EQU LSDS 1 ؛ eerom بدء معالجة ارتفاع في الخانة
STRNUM EQU EECH 1
TTT EQU STRNUM 1
TTTF EQU TTT 1
تعادل القوة الشرائية EQU TTTF 1
TABOFF EQU تعادل القوة الشرائية 1
EECL EQU TABOFF 1 ؛ eerom بدء معالجة ضعف في الخانة
DISPCON EQU EECL 1
LCDH EQU DISPCON 1
الرابطة الأمريكية EQU LCDH 1
بى بى بى
EQU الرابطة الأمريكية 1
مجلس التعاون الجمركي EQU بى بى بى
1
ليرة لبنانية EQU مجلس التعاون الجمركي 1
سمو EQU رم 1
جريدة EQU سمو 1
EQU رصدتهما جريدة 1
ح ح ح EQU رصدتهما 1

INL EQU 0x70
INH EQU INL 1
ILH EQU INH 1
CSHIFT EQU ILH 1
الطريق EQU CSHIFT 1
WAY2 EQU الطريق 1
كولو EQU WAY2 1
TCOLO EQU كولو 1
IEE EQU TCOLO 1
OTYO EQU IEE 1
TBUFF EQU OTYO 1

CH1 EQU 0xA0
CH2 EQU CH1 1
CH3 EQU CH2 1
CH4 EQU CH3 1
CH5 EQU CH4 1
CH6 EQU CH5 1
CH7 EQU CH6 1
CH8 EQU CH7 1
CH9 EQU CH8 1
CH10 EQU CH9 1
CH11 EQU CH10 1
CH12 EQU CH11 1
CH13 EQU CH12 1
CH14 EQU CH13 1
CH15 EQU CH14 1
CH16 EQU CH15 1

CH17 EQU CH16 1
CH18 EQU CH17 1
CH19 EQU CH18 1
CH20 EQU CH19 1
CH21 EQU CH20 1
CH22 EQU CH21 1
CH23 EQU CH22 1
CH24 EQU CH23 1
CH25 EQU CH24 1
CH26 EQU CH25 1
CH27 EQU CH26 1
CH28 EQU CH27 1
CH29 EQU CH28 1
CH30 EQU CH29 1
CH31 EQU CH30 1
CH32 EQU CH31 1

؛
CLKR EQU 100h ؛ تجديد قيمة المراكز و-- طرح العد
؛ القيمة مسبقا من هذا العد التنازلي للوقت.
DIV256 EQU b'00000111 '؛ 256us وضع prescale
ROMBASE EQU 0 ؛ بدء برنامج مدمج

؛
DEV_FREQ EQU D' 28000000 '؛ جهاز التردد 20 ميغاهرتز
DEV_FREQ2 EQU D' 3000000 '؛ جهاز التردد 2 ميغاهرتز
DB_HI_BYTE EQU (الراقية (((DEV_FREQ / 4) * 1 / 1000 D' ') / 3)) 1
LCD_INIT_DELAY EQU (الراقية (((DEV_FREQ / 4) * D' 46 '/ 10000 D'') / 3)) 1
LCD_INIT_DELAY2 EQU (الراقية (((DEV_FREQ2 / 4) * D' 46 '/ 10000 D'') / 3)) 1
؛
T1OSO EQU 0 ؛ RC0 / T1OSO / T1CKI
؛
RESET_V EQU 0x0000 ؛ عنوان إعادة مكافحة ناقلات
ISR_V EQU 0x0004 ؛ عنوان مكافحة ناقلات يقاطع
TABLE_ADDR EQU 0x07E0 ؛ العنوان أين تبدأ الجداول
TAB_ASC1 EQU 0x067B
TAB_ASC2 EQU 0x0754
؛
؛ LCD وحدة القيادة
؛
DISP_ON EQU 0x00C ؛ عرضها
DISP_ON_C EQU 0x00E ؛ عرضها ، المؤشر
DISP_OFF EQU 0x008 ؛ عرض المحلي
CLR_DISP EQU 0x001 ؛ العرض واضح..
ENTRY_INC EQU 0x006 ؛
ENTRY_INC_S EQU 0x007 ؛
ENTRY_DEC EQU 0x004 ؛
ENTRY_DEC_S EQU 0x005 ؛
DD_RAM_ADDR EQU 0x080 ؛ أقلها أهمية 7 بت هي العنوان
DD_RAM_UL EQU 0x080 ؛ CONER اليسرى العليا من الشاشة
DD_RAM_AD1 EQU 0x08C ؛
DD_RAM_AD2 EQU 0x0C0 ؛؛------------------------------------------------- ---------------------------
؛ العلم قليلا الاحالة
؛------------------------------------------------- ---------------------------
؛ وقد بت في العلم وتعرف هنا

KEYIN EQU 0 ؛ مجموعة رئيسية إذا ضربت في انتظار KEYMAKE

؛ الاحالة مستمر

؛ المراكز والرقائق (DS1302) -- الساعة القيادة الثوابت.
وهي رسالة إلى المراكز في RTCWR أو RTCRD.
COMWR EQU B'10001110 '

SECWR EQU B'10000000 '؛ القيادة كتابة المراكز ثانية
MINWR EQU B'10000010 '؛ القيادة كتابة المراكز دقيقة
HOUWR EQU B'10000100 '؛ القيادة كتابة المراكز ساعة
DAYWR EQU B'10001010 '؛ القيادة كتابة المراكز خلال أيام

SECRD EQU B'10000001 '؛ القيادة المراكز قراءة ثانية
MINRD EQU B'10000011 '؛ القيادة المراكز قراءة دقيقة
HOURD EQU B'10000101 '؛ القيادة قراءة المراكز ساعة
DAYRD EQU B'10001011 '؛ القيادة قراءة المراكز خلال أيام

؛ بورت التوجيه الإطار يحقق المراكز وبيانات خط الناتج / مستلزمات

RTCDOUT EQU B'00000000 '؛ المراكز وبيانات الناتج عن الخط
RTCDIN EQU B'00000010 '؛ المراكز ومدخلات بيانات خط

؛ بورت التوجيه الإطار يحقق حزب العمل الديمقراطي EEPROM خط الناتج / مستلزمات

SDAIN EQU b'00000010 '؛ حزب العمل الديمقراطي هو مدخل عندما نفذ تريس
SDAOUT EQU b'00000000 '؛ حزب العمل الديمقراطي هو ناتج عندما نفذ تريس

؛------------------------------------------------- --------------------------
؛ EEROM الروتينية
؛------------------------------------------------- --------------------------
؛ 24LC65 EEROM المناولة.
؛ READEE / WRITEE قراءة / يكتب حرفا 16 نقطة مع بداية EEFSR (60 ه) استخدام
؛ EERD وEEWR.
؛ عاطلة في الدولة خارج eerom الروتينية فإن SCL خط يجب أن يكون
؛ عقد منخفضة إذا كان خط البيانات المشتركة مع الأجهزة الأخرى.
؛ الروتينات READEE / WRITEE الكلمة مستوى واحد من الوظائف الفرعية.
؛ EERD وعندما يطلق EEWR ، اقيمت --
؛ EESTART -- قراءة eerom بدء انخفاض التصدي 8 بت
؛ على الخروج --
؛ EEBYTE -- خطأ في قانون الأحوال على الخروج
؛ ويلاحظ أن NOP 'sالتي قد تكون ضرورية لإبطاء إلى واجهة
وبعض أجزاء eerom.

؛ EEROM ثابتة -- جهاز ومعدات معالجة مدونة

EECONT EQU b'10100000 '؛ 7 بت فقط البايت
؛ جهاز شفرة 1010 ل24LC65B
؛ 7-4 في بت.
؛ الأجهزة معدات معالجة كما حددتها A0 ، 1،2
؛ يجري في بت 3-1.

؛ التالية رام السجلات المستخدمة ويجب أن يكون معادلا
ل؛ القيم المناسبة لقاعدة الصفحة ذاكرة الوصول eerom خلال قراءة وكتابة.
؛ EESER ، EEBYTE ، EESTART ، EECOUNT ، STRCOM
؛ التالية تحدد قيمة القراءة والكتابة رام بدء معالجة

EEFSR EQU b'01100000 '؛ النقاط في بداية رام

؛
؛------------------------------------------------- ---------------------------
؛ بت الاحالة
؛------------------------------------------------- ---------------------------

؛ العلم بت تعرف هنا

EEREAD EQU 0 ؛ مجموعة للقراءة على دخول EERDWR

؛*********************** ماكرو ************************* *

؛ BANK0 يختار سجل بنك صوره 0

BANK0 الكلية
اف حالة ، RP0 ؛ اختر بنك 0
ENDM

؛ BANK1 يختار سجل بنك صوره 1

BANK1 الكلية
قوات حرس الحدود حالة ، RP0 ؛ بنك اختر 1
ENDM

؛ PAGE0 يختار مدمج الصفحة 0

PAGE0 الكلية
اف PCLATH (3) ؛ المدمجة اختر صفحة 0
ENDM

؛ PAGE1 يختار مدمج الصفحة 1

PAGE1 الكلية
قوات حرس الحدود PCLATH (3) ؛ المدمجة اختر صفحة 1
ENDM

؛ RTCCLO تحدد خط ضعف المراكز على مدار الساعة

RTCCLO الكلية
اف PORTC ، RTCCLK
ENDM

؛ RTCCHI تحدد المراكز والخطوط الرفيعة على مدار الساعة

RTCCHI الكلية
قوات حرس الحدود PORTC ، RTCCLK
ENDM

؛ RTCDLO تحدد المراكز وبيانات خط ضعيف

RTCDLO الكلية
اف PORTC ، RTCIO
ENDM

؛ RTCDHI تحدد المراكز وبيانات خط الراقية

RTCDHI الكلية
قوات حرس الحدود PORTC ، RTCIO
ENDM

؛ RTCRLO تحدد المراكز وإعادة تشغيل الخط ضعيف

RTCRLO الكلية
اف PORTC ، RTCRES
ENDM

؛ RTCRHI تحدد المراكز وإعادة خط الراقية

RTCRHI الكلية
قوات حرس الحدود PORTC ، RTCRES
ENDM

؛ RTCIDLE تحدد المراكز في الدولة معطلة

RTCIDLE الكلية
RTCRLO
RTCDLO
RTCCLO
ENDM
؛******
؛ دفع ينقذ دبليو ، حالة ، PCLATH خلال سجلات يقاطع

دفع الكلية
MOVWF WCOPY ؛ curent على إنقاذ مصرف

SWAPF حالة ، وغربا عين اترك بت كما هو

BANK0 ؛ لإنقاذ ما تبقى على البنك 0

MOVWF SCOPY

MOVFW PCLATH ؛ ومركز دبليو آمنة -- الآن إنقاذ PCLATH
MOVWF PCOPY
ENDM؛******
؛ اسحب يعيد دبليو ، ومركز ، وسجلات PCLATH بعد دفع

اسحب الكلية
BANK0 ؛ استعادة من البنك 0
MOVFW PCOPY ؛ استعادة PCLATH الأولى
MOVWF PCLATH

SWAPF SCOPY ، واط ؛ استعادة عاب موقف حالة
مركز MOVWF

SWAPF WCOPY و
SWAPF WCOPY ، غربا
، اترك بت كما هو ى
ENDM؛******
؛ TSTRTC التحركات لTIMER0 دبليو ريج وتضع حالة الصفر

TSTRTC الكلية
MOVFW TMR0 ؛ تجارب لمهلة
ENDM

؛******
؛ EEBIT الساعات ترحيل بعض الشيء لeerom البيانات.

EEBIT الكلية
EEBIT1 المحلية ، EEBIT2
SKPNC
غوتو EEBIT1

؛ تنفيذ واضحة

اف SDPORT ، حزب العمل الديمقراطي
غوتو EEBIT2

؛ ومن المقرر تنفيذ

EEBIT1 قوات حرس الحدود SDPORT ، حزب العمل الديمقراطي

؛ ساعة فإن eerom

EEBIT2 NOP
قوات حرس الحدود SCPORT ، SCL ؛ ساعة عالية
NOP
اف SCPORT ، SCL ؛ ساعة منخفضة
ENDM؛******
؛ EEGET الساعات فإن البايت (إلى اليسار) في EESER من eerom.بت العد
؛ ومن جانب '0' العلم في EESER.
؛ الخروج مع SCL وحزب العمل الديمقراطي على حد سواء
، وانخفاض نواتج

EEGET الكلية
EEGET1 المحلية

MOVLW b'11111110 '؛ 8 بت البيانات إلى أن يقرأ ذلك العلم 8th بت
MOVWF EESER

MOVLW SDAIN ؛ حزب العمل الديمقراطي هو المدخلات
BANK1
MOVWF TRISE
BANK0

EEGET1 قوات حرس الحدود SCPORT ، SCL ؛ ساعة عالية للحصول على بيانات بت
CLRC ؛ نفرض بيانات ضعيفة في الوقت الراهن
BTFSC SDPORT ، حزب العمل الديمقراطي ؛ بت تجارب حزب العمل الديمقراطي
SETC ؛ بيانات عالية فعلا!
آر ال اف EESER ؛ القيام = بت من البيانات إلى البيانات شيفتر
اف SCPORT ، SCL ؛ ساعة منخفضة بعد قراءة البيانات
EEGET1 قبل الميلاد ؛ بت اختبار العد العلم -- 0 حلقة حتى يظهر

؛ بايت وقد وردت لEESER استعادة حافلة لنواتج

MOVLW SDAOUT ؛ الانتاج هو حزب العمل الديمقراطي
BANK1
MOVWF TRISE
BANK0
ENDM

؛******
؛ EEPUT الساعات فإن البايت (إلى اليسار) في EESER في eerom.بت العد
؛ في EECOUNT.

EEPUT الكلية
EEPUT1 المحلية

EEPUT1 آر ال اف EESER ؛ احصل بت من البيانات
EEBIT ؛ لتنفيذ EEROM البيانات وذلك على مدار الساعة
DECFSZ EECOUNT ؛ تحصي بت
غوتو EEPUT1 ؛ قم بالالتفاف حتى بت أرسل
ENDM

؛******
؛ TABSET ينشئ lcd الجدول نقطة قبل ان يعوض سلسلة الانتاج
؛ يبدأ

TABSET الكلية
MOVLW b'11111111 '؛ الموازنة يزداد في كل دعوة
الجدول -- أولا يجب أن تولد قيمة الصفر
؛ تعوض.
MOVWF TABOFF
ENDM؛******
؛ نقاط سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث

نقاط الكلية
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT8 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ المجلس التشريعي الفلسطيني على استعداد لسلسلة البحث.مجموعات PCLATH إلى 8

POINT8 الكلية
MOVLW.8
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT9 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 9

POINT9 الكلية
MOVLW.9
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT10 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 10

POINT10 الكلية
MOVLW.10
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT11 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 11

POINT11 الكلية
MOVLW.11
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT12 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 12

POINT12 الكلية
MOVLW.12
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT13 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 13

POINT13 الكلية
MOVLW.13
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT14 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 14

POINT14 الكلية
MOVLW.14
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛******
؛ POINT15 سلسلة زيادات معادلة المؤشر
، ويضيف إلى
؛ PCL جاهزة لسلسلة البحث.مجموعات PCLATH إلى 15

POINT15 الكلية
MOVLW.15
MOVWF PCLATH
INCF TABOFF
MOVFW TABOFF
ADDWF PCL
ENDM

؛ إعادة معالجتها.في تحديد نوع إعادة
؛

ORG RESET_V ؛ إعادة مكافحة ناقلات الموقع
غوتو ستارت ؛ نعم
؛
؛******
؛ قاطع ناقل -- لوحة مفاتيح الكمبيوتر

ORG ISR_V
غوتو INT
؛
؛************************* الوظائف الفرعية *********************** *****

؛******
؛ سلسلة يرسل مع عدد في سلسلة دبليو سجل -- إلى رام

سلسلة
MOVWF STRNUM
TABSET ؛ Xero الأوفست
PAGE1
يطالبون DOSTR ؛ سلسلة من الأحرف
PAGE0 ؛ استعادة مدمج الصفحة

العودة

؛******
؛ STRING2 يرسل مع عدد في سلسلة دبليو تسجيل -- لlcd

STRING2
MOVWF STRNUM
TABSET ؛ Xero الأوفست
PAGE1
يطالبون DOSTR2 ؛ سلسلة من الأحرف
PAGE0 ؛ استعادة مدمج الصفحة

العودة

INIT_DISPLAY MOVLW DISP_ON_C ؛ عرضها ، على CURSON
يطالبون SEND_CMD ؛ إرسال هذه القيادة لعرض الوحدة
MOVLW CLR_DISP ؛ العرض واضح..
يطالبون SEND_CMD ؛ إرسال هذه القيادة لعرض الوحدة
MOVLW ENTRY_INC ؛ في تحديد طريقة دخول
شركة ما من تحول
يطالبون SEND_CMD ؛ إرسال هذه القيادة لعرض الوحدة
العودة

CLEAR_DISP
MOVLW CLR_DISP ؛ العرض واضح..
يطالبون SEND_CMD ؛ إرسال هذه القيادة لعرض الوحدة
العودة

؛
عرض
MOVLW DD_RAM_AD2 ؛
يطالبون SEND_CMD ؛
يطالبون LOAD_HRS ؛ لا ، لا أحد NOMAL عرض
يطالبون LOAD_COLON ؛
يطالبون LOAD_MIN ؛
يطالبون LOAD_COLON ؛
يطالبون LOAD_SEC ؛
العودة
؛
؛
LOAD_HRS
MOVF MSDH ، غربا
، تحميل MSD القيمة في WREG
يطالبون NUM_TABLE ؛ احصل على مدونة أسكي
يطالبون SEND_CHAR ؛ تسطر طابع العرض
؛
MOVF LSDH ، غربا
، تحميل قيمة LSD الى WREG
يطالبون NUM_TABLE ؛ احصل على مدونة أسكي
يطالبون SEND_CHAR ؛ ارسل هذه الأحرف لعرض
العودة
؛
LOAD_COLON MOVLW '' ؛ أسكي القيمة لالفراغ
BTFSC LSDS ، 0 ؛ فهل من الغريب أو حتى الثانية
ADDLW ':' -- '' ؛ غريب ، والثانية هي القولون.
؛ أضف إلى تعويض دلتا أسكي حرفا
يطالبون SEND_CHAR ؛ أرسل هذا الطابع على الشاشة
العودة
؛
LOAD_MIN
MOVF MSDM ، غربا
، تحميل MSD قيمة في Wreg
يطالبون NUM_TABLE ؛ احصل على مدونة أسكي
يطالبون SEND_CHAR ؛ أرسل هذا الطابع على عرض
؛
MOVF LSDM ، غربا
، تحميل قيمة LSD الى Wreg
يطالبون NUM_TABLE ؛ احصل على مدونة أسكي
يطالبون SEND_CHAR ؛ أرسل هذا الطابع على عرض
العودة
LOAD_SEC
MOVF MSDS ، غربا
، تحميل MSD قيمة في Wreg
يطالبون NUM_TABLE ؛ احصل على مدونة أسكي
يطالبون SEND_CHAR ؛ أرسل هذا الطابع على عرض
؛
MOVF LSDS ، غربا
، تحميل قيمة LSD الى Wreg
يطالبون NUM_TABLE ؛ احصل على مدونة أسكي
يطالبون SEND_CHAR ؛ أرسل هذا الطابع على عرض
العودة
؛
؛************************************************* ************************
* SendChar -- يرسل إلى الطابع LCD *
* وهذا الاختلاف في طبيعة روتينية الى العليا والسفلى *
* يقضم ويرسل إلى LCD ، وعاب العليا أولا.*
* البيانات المرسلة على بورت <3:0> دبابيس *
؛************************************************* ************************

SEND_CHAR
MOVWF شار ؛ فرحلأا لارسالها في دبليو
يطالبون LCD_DELAY ؛ سبيل المثال أجهزة التلفاز الكريستالية انتظر ان تكون على اهبة الاستعداد
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
SWAPF تشار ، واط ؛
ANDLW 0x0F ؛ احصل العلوي عاب
MOVWF LCD_DATA ؛ إرسال البيانات LCD
LCD_CNTL قوات حرس الحدود ، وجمهورية صربسكا ؛ LCD لمجموعة البيانات واسطة
LCD_CNTL قوات حرس الحدود ، وهاء ؛ متناوب هاء سبيل المثال أجهزة التلفاز الكريستالية
NOP
اف LCD_CNTL ، هاء
MOVF تشار ، دبليو
ANDLW 0x0F ؛ أدنى احصل على قرض
MOVWF LCD_DATA ؛ إرسال البيانات LCD
LCD_CNTL قوات حرس الحدود ، وجمهورية صربسكا ؛ LCD لمجموعة البيانات واسطة
LCD_CNTL قوات حرس الحدود ، وهاء ؛ متناوب هاء سبيل المثال أجهزة التلفاز الكريستالية
NOP
اف LCD_CNTL ، هاء
؛ اف LCD_CNTL ، الجمهورية الصربية
العودة

؛************************************************* **************
* sendcmd -- يرسل إلى القيادة lcd *
* هذا روتينية الانقسامات في القيادة العليا والسفلى *
* يقضم وترسلها إلى lcd ، العلوي nible الأولى.*
* البيانات المرسلة على بورت <3:0> دبابيس *
؛************************************************* **************

SEND_CMD
MOVWF شار ؛ فرحلأا أن ترسل في دبليو
يطالبون LCD_DELAY ؛ سبيل المثال أجهزة التلفاز الكريستالية انتظر ان تكون على اهبة الاستعداد
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
يطالبون LCD_DELAY ؛
SWAPF تشار ، واط ؛
ANDLW 0x0F ؛ احصل العلوي عاب
MOVWF LCD_DATA ؛ إرسال البيانات LCD
اف LCD_CNTL ، جمهورية صربيا ؛ LCD لتحديد أسلوب القيادة
LCD_CNTL قوات حرس الحدود ، وهاء ؛ متناوب هاء سبيل المثال أجهزة التلفاز الكريستالية
NOP
اف LCD_CNTL ، هاء
MOVF تشار ، دبليو
ANDLW 0x0F ؛ أدنى احصل على قرض
MOVWF LCD_DATA ؛ إرسال البيانات LCD
LCD_CNTL قوات حرس الحدود ، وهاء ؛ المسمار هاء سبيل المثال أجهزة التلفاز الكريستالية
NOP
اف LCD_CNTL ، هاء
العودة
؛
؛ الروتينية تأخذ هذه الأوقات يحسب أن هناك حاجة إلى تأجيل الحلقة
؛ إعدامه ، على أساس LCD_INIT_DELAY ساو يشمل
؛ وتيرة العملية.وتستخدم هذه السجلات قبل أن ثمة حاجة إلى
؛ تخزين الوقت.
؛

LCD_DELAY MOVLW LCD_INIT_DELAY ؛
MOVWF دولارا ؛ MSD واستخدام السجلات LSD لInitilize LCD
CLRF شعبة الدعم التقني ؛
LOOP2 DECFSZ شعبة الدعم التقني ؛ تأخر الوقت MSD * = ((3 * 256) 3) * Tcy
غوتو LOOP2 ؛
DECFSZ دولارا ؛
END_LCD_DELAY
غوتو LOOP2 ؛
العودة ؛

LCD_DELAY3 MOVLW LCD_INIT_DELAY2 ؛
MOVWF دولارا ؛ MSD واستخدام السجلات LSD لInitilize LCD
CLRF شعبة الدعم التقني ؛
LOOP23 DECFSZ شعبة الدعم التقني ؛ تأخر الوقت MSD * = ((3 * 256) 3) * Tcy
غوتو LOOP23 ؛
DECFSZ دولارا ؛
END_LCD_DELAY3
غوتو LOOP23 ؛
العودة ؛

وهذا هو روتين ثانوي لوحة مفاتيح جهاز الكمبيوتر يقاطع

INT دفع ؛ حفظ دبليو مركزها PCLATH
MOVLW 0
MOVWF PCLATH ؛ السماح للدعوة إلى طاولة البحث
BTFSC INTCON ، INTF ؛ اختبار للحديث عن INT/RB0
غوتو KBD
غوتو INTX ؛ الخروج من يقاطع

KBD
MOVFW NBITS
SUBLW 0x00
BNZ BIT1_8

BIT0
غوتو اهتززت

BIT1_8
MOVFW NBITS
SUBLW 0x09
بليزية BIT9

MOVFW NBITS
SUBLW 0x0A
بليزية BIT10

CLRC
BTFSC KEYPOR ، RB1
SETC
قوة الرد السريع KEYTEMP
غوتو اهتززت

BIT9
غوتو اهتززت

BIT10
MOVFW KEYTEMP
SUBLW 0x12
بليزية تات

MOVFW KEYTEMP
SUBLW 0x59
BNZ NOTLS

تات
MOVFW LASTKEY
SUBLW 0xF0
BNZ MAKELS
اف FLAG1 ، وتحول

MOVLW 0x12
MOVWF LASTKEY
غوتو مرتب

MAKELS
FLAG1 قوات حرس الحدود ، وتحول
MOVLW 0x12
MOVWF LASTKEY
غوتو مرتب

NOTLS
MOVFW KEYTEMP
SUBLW 0x14
BNZ NOTCTRL
NOP
غوتو مرتب

NOTCTRL
MOVFW KEYTEMP
SUBLW 0xF0
BNZ NOTBREAK
MOVFW KEYTEMP
MOVWF LASTKEY
غوتو مرتب

NOTBREAK
MOVFW LASTKEY
SUBLW 0xF0
BNZ NOT_F0
MOVLW 0x00
MOVWF LASTKEY
غوتو مرتب

NOT_F0
MOVFW KEYTEMP
MOVWF LASTKEY
MOVWF KTMP
BTFSC FLAG1 ، وتحول
تحويل غوتو

UNSHIFTED
يطالبون ASC1
غوتو SKIP1

تحويل
يطالبون ASC2

SKIP1NOT0
MOVWF KEYBUFF
قوات حرس الحدود FLAG1 الرئيسية
MOVLW 0x01
MOVWF NBYTES

مرتب
MOVLW 0x00
MOVWF NBITS
MOVWF KEYTEMP
غوتو INTDONE

نتوء
INCF NBITS

INTDONE
اف INTCON ، INTF
اسحب
RETFIE

؛ العام الخروج من يقاطع

INTX اف INTCON ، RBIF ؛ واضحة تدعو إلى العلم interrypt
اف INTCON ، INTF
اف PIR1 ، RCIF
اسحب ؛ استعادة دبليو ، ومركز PCLATH
RETFIE

؛ RTCGET يقرأ DS1302 ريال ساعة خلال أيام ، ساعات ، دقائق ، ثواني ،
؛ للموافقة المسبقة عن علم لذاكرة الوصول العشوائي.

RTCGET MOVLW SECRD تعد المراكز وقراءة ثانية
MOVWF مسلسلا ؛ تشكيل القيادة
يطالبون RTCRD ؛ حصول على بيانات ثواني
MOVFW مسلسلا
MOVWF التدريب الريفية ؛ إنشاء المراكز المحلية نسخة ثانية

MOVLW MINRD تعد المراكز وقراءة دقيقة
MOVWF مسلسلا ؛ تشكيل القيادة
يطالبون RTCRD ؛ حصول على محضر للبيانات
MOVFW مسلسلا
MOVWF RTCM ؛ تنشئ فروعا محلية نسخة من المراكز ودقيقة

MOVLW HOURD تعد قراءة المراكز ساعة
MOVWF مسلسلا ؛ تشكيل القيادة
يطالبون RTCRD ؛ حصول على بيانات الساعات
MOVFW مسلسلا
MOVWF RTCH ؛ تنشئ فروعا محلية نسخة من المراكز وساعات

MOVLW DAYRD تعد قراءة المراكز خلال أيام
MOVWF مسلسلا ؛ تشكيل القيادة
يطالبون RTCRD ؛ حصول على بيانات الأيام
MOVFW مسلسلا
MOVWF RTCD ؛ تنشئ فروعا محلية نسخة من المراكز وخلال أيام

العودة ؛ ريدينج على الخروج من المراكز ومرة من جديد

؛ RTCPUT كتب جديدة المراكز من الوقت لDS1302 من ذاكرة الوصول العشوائي والموافقة المسبقة عن علم
؛ إعادة تشغيل المركز العلاجي للاغتصاب

RTCPUT
MOVLW COMWR
MOVWF مسلسلا
MOVLW B'00000000 '
MOVWF GP1
يطالبون RTCWR

يطالبون CLKSTOP ؛ إيقاف عقارب الساعة أثناء كتابة جديدة ساعات
؛ والدقائق.هذه الاصفار والثواني
كما يمنع أي أخطاء الانتقال بين
؛ كتابة جديدة بالساعات والدقائق.

MOVLW DAYWR واعداد المراكز والقيادة
MOVWF مسلسلا ووضع المراكز والقيادة الجديدة للكتابة ساعة
MOVFW RTCD ؛ حصول على المراكز الجديدة خلال أيام
MOVWF GP1 ؛ إنشاء بيانات جديدة خلال أيام
يطالبون RTCWR اعداد جديدة يوما إلى المراكز

MOVLW HOUWR واعداد المراكز والقيادة
MOVWF مسلسلا ووضع المراكز والقيادة الجديدة للكتابة ساعة
MOVFW RTCH ؛ حصول على المراكز الجديدة ساعة
MOVWF GP1 ؛ إنشاء قواعد جديدة للبيانات ساعات
يطالبون RTCWR اعداد جديدة ساعة إلى المراكز

MOVLW MINWR ؛ المراكز وكتابة
MOVWF مسلسلا ووضع المراكز والقيادة الجديدة للكتابة دقائق
MOVFW RTCM ؛ حصول على المراكز الجديدة دقائق
MOVWF GP1 ؛ إنشاء قواعد جديدة للبيانات دقيقة
يطالبون RTCWR اعداد جديدة دقيقة إلى المراكز

MOVLW SECWR ؛ المراكز وكتابة
MOVWF مسلسلا ووضع المراكز والقيادة الجديدة للكتابة ثانية
MOVFW التدريب الريفية ؛ حصول على المراكز الجديدة دقائق
MOVWF GP1 ؛ إنشاء قواعد جديدة للبيانات ثانية
يطالبون RTCWR اعداد جديدة ثانية إلى المراكز

يطالبون CLKGO ؛ استئناف المراكز

MOVLW COMWR
MOVWF مسلسلا
MOVLW B'10000000 '
MOVWF GP1
يطالبون RTCWR

العودة ؛ مخرج جديد من الكتابة مرة المراكز

؛ CLKGO تبدأ المراكز والرقائق.

CLKGO MOVLW SECRD ؛ احصل ثانية عن المراكز
MOVWF مسلسلا
يطالبون RTCRD ؛ حملهم الآن
اف مسلسلا ،
و 7 ؛ واضحا لمعاهدات الاستثمار الثنائية للأعلى ستارت الساعة
MOVFW مسلسلا
MOVWF GP1 ؛ ستارت الساعة مع نفس الوقت
MOVLW SECWR ؛ اعادة كتابة ثانية مع 'إدارة' العلم
MOVWF مسلسلا
يطالبون RTCWR
العودة

؛ CLKSTOP توقف المراكز والرقائق.

CLKSTOP MOVLW SECWR
MOVWF مسلسلا
MOVLW 0FFH واعداد المراكز ثواني مع الجميع '1' دإ لوقفه
MOVWF GP1
يطالبون RTCWR
العودة

؛ RTCWR كتب عقارب الساعة في الوقت الحقيقي مع رقاقة القيادة بايت في مسلسلا
والبيانات الخطية بايت في GP1 في ثنائي.
؛ يفترض الدخول RST المراكز / وSCLK منخفضة.
؛ على الخروج المراكز RST / متروك للارتفاع وانخفاض SCLK تبقى جاهزة
ل؛ القراءة والكتابة تتم.

RTCWR
RTCCLO ؛ المراكز الساعة السطر ضئيلة --
RTCRHI -- المراكز وإعادة يمتد الراقية
يطالبون RTCTX ؛ القيادة لدى المراكز ومسلسلا
MOVFW GP1 ؛ حصول على البيانات بايت --
MOVWF مسلسلا -- وأنشأت شيفتر
يطالبون RTCTX ؛ بيانات المراكز
RTCRLO ؛ البيانات قد كتبت إلى المراكز
العودة ؛ الخروج من المراكز وكتابة بيانات القيادة بلاس

؛ RTCRD تنص على مدار الساعة في الوقت الحقيقي مع رقاقة القيادة بايت في مسلسلا
ويقرأ البيانات البايت عادت مسلسلا في التفكيك الوسيطي القاعدي.
؛ يفترض الدخول RST المراكز / وSCLK منخفضة.
؛ على الخروج المراكز RST / متروك للارتفاع وانخفاض SCLK تبقى جاهزة
ل؛ القراءة والكتابة تتم.

RTCRD RTCCLO ؛ المراكز الساعة السطر ضئيلة --
RTCRHI -- المراكز وإعادة يمتد الراقية
يطالبون RTCTX ؛ القيادة لدى المراكز ومسلسلا
MOVLW RTCDIN ؛ جعل المراكز الأول / م بور الرقم مدخلا
BANK1
MOVWF TRISC
BANK0
يطالبون RTCRX ؛ البيانات من المراكز
MOVLW RTCDOUT ؛ جعل المراكز الأول / م بور الرقم ناتج
BANK1
MOVWF TRISC
BANK0
RTCRLO ؛ البيانات قد كتبت إلى المراكز
العودة ؛ الخروج من المراكز والقيادة للكتابة وقراءة

؛ RTCTX يحيل سلسلة بيانات إلى المراكز
؛ الاستخدامات ال GP2 ومسلسلا

RTCTX
RTX1 المحلية ، RTX2
MOVLW.8 ؛ عدد معاهدات الاستثمار الثنائية للتحول
MOVWF ال GP2
RTX1 RTCDLO ؛ تتولى بت من البيانات سيكون '0' في الوقت الحالي
قوة الرد السريع مسلسلا ؛ احصل بت من البيانات
BNC RTX2 ؛ فرع إذا البيانات ألف '0'
RTCDHI ؛ بت من البيانات وكان هناك '1' في الواقع
RTX2 RTCCHI ؛ ساعة البيانات الى المراكز
RTCCLO
DECF ال GP2 ؛ العد معاهدات الاستثمار الثنائية لأنها كتبت إلى المراكز
BNZ RTX1 ؛ حلقة حتى ارسل الى المراكز
العودة

؛ RTCRX يستقبل البيانات من المراكز وبشكل مسلسل
؛ الاستخدامات ال GP2 ومسلسلا

RTCRX
RRX1 المحلية ، RRX2
MOVLW.8 ؛ عدد معاهدات الاستثمار الثنائية للتحول
MOVWF ال GP2
RRX1 CLRC ؛ تتولى بت من البيانات سيكون '0' في الوقت الحالي
BTFSC PORTC ، RTCIO ؛ قراءة معاهدة الاستثمار الثنائية من المراكز
SETC ؛ البيانات حقا '1'
قوة الرد السريع مسلسلا ؛ تحويل بت من البيانات بشكل مسلسل
RRX2 RTCCHI ؛ ساعة البيانات الى المراكز
RTCCLO
DECF ال GP2 ؛ العد معاهدات الاستثمار الثنائية لأنها كتبت إلى المراكز
BNZ RRX1 ؛ حلقة حتى ارسل الى المراكز
العودة
؛
؛******
؛ الرئيسية الاختبارات إذا keyhit ينتظر أن تحليل --
؛ العائدات الرئيسية في KEYVAL مع مجموعة من تنفيذ

GETKE1
CLRC ؛ نفرض أي مفتاح لحظة
BTFSS FLAG1 الرئيسية

؛ ولا حتى مفتاح الخروج مع تنفيذ واضحة

العودة ؛ خروج من أهم

؛ الرئيسية الانتظار حتى تصل زمارة ، والتعامل مع العلم وخروج مجموعة تحمل

اف FLAG1 الرئيسية ؛ العلم واضحة مشيرا إلى أن مفتاح ضرب تنتظر
SETC ؛ العلم المتصل إلى أن KEYVAL صالحة
العودة ؛ الخروج من TKEY

؛******
؛ BSTART يبدأ من eerom الاتصالات SCL
، حزب العمل الديمقراطي عالية المدخلات.
؛ يولد يبدأ بت -- SCL العالية
، بينما حزب العمل الديمقراطي وغني عن ارتفاع / انخفاض تليها
؛ ومعالجة السلافية -- قراءة وكتابة هي لم ترسل قليلا هنا.
؛ الشكل --

؛ 7،6،5،4 السلافية تتناول معاهدات الاستثمار الثنائية -- 1010
؛ معاهدة استثمار ثنائية eerom استدعاء 3،2،1

؛ الدخول مع حزب العمل الديمقراطي
، وحزب سوكوسوكو كمدخلات عالية.
؛ مخرج مع حزب العمل الديمقراطي ، وانخفاض نواتج SCL

BSTART
SDPORT قوات حرس الحدود ، وحزب العمل الديمقراطي
NOPBSF SCPORT,SCL NOPBCF SDPORT,SDA ; SDA low with SCL high
; This is a start edge NOPBCF SCPORT,SCL ; SCL low

; Form the control byte with page address

MOVLW 0x00
MOVWF EESER
CLRC ; Ready for the shift
RLF EESER ; Page select in bits 3,2,1
MOVLW EECONT ; Get the control byte with ls nibble zero
IORWF EESER ; Set up control byte
MOVLW .7 ; Set bit count
MOVWF EECOUNT
EEPUT العودة;******
; BSTOP ends eerom communications. Generates stop bit - SCL
; high while SDA goes LOW/HIGH. Then drop SCL.

BSTOP
BCF SDPORT,SDA ; SDA low NOPBSF SCPORT,SCL ; SCL high NOPBSF SDPORT,SDA ; SDA high NOPBCF SCPORT,SCL ; SCL low NOP
العودة

;******
; GETACK gets the ack from the eerom.
; Turns round SDA line and clocks device - exits with EESER clear
; if ack is seen. Eerom is left with SDA/SCL as outputs and low.

GETACK
MOVLW SDAIN ; SDA is input
BANK1
MOVWF TRISE
BANK0
BSF SCPORT,SCL ; SCL high
NOP ; Need to wait up to 4 us NOPCLRF EESER ; Assume ack will be seen!
BTFSC SDPORT,SDA ; Test SDA bit for a LOW ack
COMF EESER ; Ack was not seen
BCF SCPORT,SCL ; SCL low
MOVLW SDAOUT ; SDA is output
BANK1
MOVWF TRISE
BANK0 العودة;****** ؛; READEE/WRITEE reads/writes 16 bytes of ram with eerom page number
; in EEPAGE and the start address in EESTART.

; EEROM 16 byte read on 16 byte address boundary

READEE
BSF FLA,EEREAD ; Flag reading
GOTO WRITEE1

; EEROM 8 byte write on 8 byte address boundary

WRITEE
BCF FLA,EEREAD ; Flag writing
WRITEE1
MOVWF STRCOM ; Save eerom page/address value
MOVLW .16 ; Read/write 16 bytes

;
; Form eerom read start address

EERDWR
MOVWF EEBYTE ; Read/write 16 bytes
MOVFW STRCOM
MOVWF EESTART ; Set eerom start address

; Generate the start bit and the control byte which includes the
; page number

CALL BSTART ; Generate a start and control byte with
; page number (7 bits)
CLRC ; Want to read data but device needs a write
; to accept the word address
EEBIT ; Send the bit to eerom
CALL GETACK ; Check for acknowledge from eerom
BTFSC EESER,0 ; Skip if ack was seen from eerom
GOTO EERDQ ; Error here - ack was not seen

; Set up the start address

MOVFW EECH ; Get the start address
MOVWF EESER ; Shift address from here to eerom
MOVLW 8 ; Set up the bit count
MOVWF EECOUNT
EEPUT ; Clock the address to the eerom
CALL GETACK ; Check for acknowledge from eerom
BTFSC EESER,0 ; Skip if ack was seen from eerom
GOTO EERDQ ; Error here - ack was not seen MOVFW EESTART ; Get the start addresS
MOVWF EESER ; Shift address from here to eerom
MOVLW 8 ; Set up the bit count
MOVWF EECOUNT
EEPUT ; Clock the address to the eerom
CALL GETACK ; Check for acknowledge from eerom
BTFSC EESER,0 ; Skip if ack was seen from eerom
GOTO EERDQ ; Error here - ack was not seen ; Test if read or write and action (read is flagged '1')

BTFSC FLA,EEREAD ; Skip if writing

;
; Read the eerom

GOTO EERD

;******
; Writes bytes from FSR pointed ram to eerom as address in EESTART

; On entry -----

; EEBYTE has the byte count.
; EESTART has the eerom start address.
; fsr points to start of ram area.

; On exit -----

; EESTART is preserved
; EEBYTE is zero unless a bus error occurs when it is set to 1. ; Get a data byte and write to eerom

EEWR MOVFW 0 ; Use FSR to retrieve data byte from ram
MOVWF EESER ; Data to shifter
MOVLW 8 ; Set up the bit count
MOVWF EECOUNT
EEPUT ; Byte to eerom

CALL GETACK ; Check for acknowledge from eerom
BTFSC EESER,0 ; Skip if ack was seen from eerom
GOTO EEWRQ ; Error here - ack was not seen

; Written a byte - test if more bytes to send and action if so

DECF EEBYTE ; Another byte to write?
BZ EEWRX ; Exit if no more bytes to write
INCF FSR ; Move the ram read pointer
GOTO EEWR

; Handle the error state

EEWRQ MOVLW 1
MOVWF EEBYTE ; Flag that a bus error has occured
CALL BSTOP
GOTO EEWRZ1

; All bytes written so terminate the write cycle and wait for eerom
; to be idle.

EEWRX CALL BSTOP ; Send a stop
MOVLW b'00000111' ; Set TMR0 for 1/4 second tick
BANK1
MOVWF OPTION_REG ; and do it
BANK0
MOVLW CLKR-.44 ; 40 gives 11 ms delay
MOVWF TMR0 ; Preset divider
EEWRZ MOVF TMR0,W ; Test for timeout
BNZ EEWRZ ; Loop until timed out
EEWRZ1
RETURN ; Exit back to caller

;******
; EERD reads from the eerom.
; On entry -----
; EEBYTE has the byte count.
; EESTART has the eerom start address.
; On exit -----
; Page 3 has the read data
; EESTART is preserved
; EEBYTE is zero unless a bus error occurs when it is set to 1. EERD
CALL BSTART ; Generating the start condition again!
SETC ; Reading data so tell eerom
EEBIT ; Send the bit to eerom
CALL GETACK ; Check for acknowledge from eerom
BTFSC EESER,0 ; Skip if ack was seen from eerom
GOTO EERDQ ; Error here - ack was not seen

; Eerom is set up for reading - ack data bytes until 8 are read and
; then a stop is sent and read is terminated

EERDB EEGET ; Get the byte from the eerom --
MOVFW EESER ; -- into this reg!
MOVWF 0 ; -- and save at indirect address
DECF EEBYTE ; Count the bytes read from eerom
BZ EERDX ; Exit from reading when all bytes are read

; Another byte to read so ack and loop

BCF SDPORT,SDA ; SDA low is ACK to eerom

MOVLW b'00000000' ; SDA out: NOPBSF SCPORT,SCL ; SCL to clock low for ACK to eerom
NOP ; Send ack for 4 us
BCF SCPORT,SCL ; SCL low
INCF FSR ; Move the ram write pointer
GOTO EERDB ; Loop until data block is read

; Handle the error state

EERDQ MOVLW 1
MOVWF EEBYTE ; Flag that a bus error has occured
GOTO EERDX1 ; Jump and exit

; All bytes read so terminate the read cycle.

EERDX CALL BSTOP ; Stop condition to eerom

; On exit, if flag is set, jump return to string send routine

EERDX1
RETURN ; Exit back to caller

;**********************************************************
AFFDISP

MOVFW AAA
MOVWF FSR
MOVFW INDF
MOVWF PORTD
BSF PORTB,CS0 NOP
NOPBCF PORTB,CS0
INCF FSR
MOVFW INDF
MOVWF PORTD
BSF PORTB,CS1 NOP
NOPBCF PORTB,CS1
MOVFW AAA
ADDLW 0x10
MOVWF FSR
MOVFW INDF
MOVWF PORTD
BSF PORTB,CS2 NOP
NOPBCF PORTB,CS2
INCF FSR
MOVFW INDF
MOVWF PORTD
BSF PORTB,CS3 NOP
NOPBCF PORTB,CS3
MOVFW AAA
ADDLW 0x20
MOVWF FSR
MOVFW INDF
MOVWF PORTD
BSF PORTB,CS4 NOP
NOPBCF PORTB,CS4
INCF FSR
MOVFW INDF
MOVWF PORTD
BSF PORTB,CS5 NOP
NOPBCF PORTB,CS5
CALL LCD_DELAY3
INCF AAA
INCF AAA العودة;********************************************************** ؛ROTAT
MOVFW CSHIFT
MOVWF ILH تكرارCLRC
RLF INL ; THROUGHT CARRY
RLF INH ; THROUGHT CARRY
DECF ILH
BNZ REPEAT العودةROTAT2
MOVFW CSHIFT
MOVWF ILH
REPEAT2
CLRC
RRF INH ; THROUGHT CARRY
RRF INL ; THROUGHT CARRY
DECF ILH
BNZ REPEAT2 العودة;*********************************************************
DTIME
CALL RTCGET

MOVFW RTCH
ANDLW 0x0F
MOVWF LSDH
RRF RTCH
RRF RTCH
RRF RTCH
RRF RTCH
MOVFW RTCH
ANDLW 0x0F
MOVWF MSDH ؛MOVFW RTCM
ANDLW 0x0F
MOVWF LSDM
RRF RTCM
RRF RTCM
RRF RTCM
RRF RTCM
MOVFW RTCM
ANDLW 0x0F
MOVWF MSDM ؛MOVFW RTCS
ANDLW 0x0F
MOVWF LSDS
RRF RTCS
RRF RTCS
RRF RTCS
RRF RTCS
MOVFW RTCS
ANDLW 0x0F
MOVWF MSDS العودة;*********************************************************
RECOR
MOVWF KEYBUFF
MOVLW EEFSR
MOVWF FSR
MOVLW 0x30
SUBWF KEYBUFF,0
CALL STRING

MOVLW EEFSR ; Point at start of read/write ram
MOVWF FSR ; Set up the start pointer

MOVFW EECL ; Get PAGE 1 BLOCK 1 identity
CALL WRITEE ; Write the 16 bytes back from the eerom

MOVFW EECL
ADDLW 0x10
ADDCF EECH
MOVWF EECL

CALL LCD_DELAY
CALL LCD_DELAY العودة; *************************** INIT *********************** ؛;**********************************************************************
;***** Start program here , Power - ON reset occured
;********************************************************************** ؛START ; Power_ON Reset ( Beginning of program)
BANK0 ; Bank 0
CLRF STATUS ; Do Initialization ( Bank 0 )
CLRF INTCON
CLRF PIR1
CLRF T1CON ; RC1 is NOT overridden by TCKO
CLRF NBITS
CLRF KEYTEMP
CLRF KEYBUFF
CLRF FLAG1
CLRF KTMP
CLRF LASTKEY
CLRF EECL
CLRF EECH

MOVLW 0x07

BANK1 ; Bank 1
MOVWF ADCON1
MOVLW 0x80
MOVWF OPTION_REG ;
CLRF PIE1 ; Disable all peripheral interrupts
BANK0 ; Bank 0

CLRF ADCON0
CLRF PORTD ; ALL PORT output should output Low.
CLRF PORTE
CLRF PORTB
CLRF PORTA
BCF SCPORT,SCL

;************** PORT SETUP **************************************

BANK1

; A port setup

MOVLW B'00000000'
MOVWF TRISA

; B port setup

MOVLW b'00000011' ; Set port data directions
MOVWF TRISB

; C PORT SETUP

MOVLW B'00000000' ; SET PORT DATA DIRECTIONS
MOVWF TRISC

; D PORT SETUP

MOVLW B'00000000'
MOVWF TRISD

; E PORT SETUP

MOVLW B'00000000'
MOVWF TRISE
; BSF PIE1,RCIE
BANK0

;******
; Set up timer options
; Timer0 is set for internal, 1/4 ms pre scale
; TIMER1
; TIMER2 is used to debounce the keypad in interrupt ONLY
; It is set for 256 us increment in PR2

MOVLW b'01111111' ; Prescale 16, postscale 16, timer enabled
MOVWF T2CON

; Set miscellaneous flags
CLRF FLAG ؛; Initialize the LCD Display Module ؛CLRF LCD_CNTL ; ALL PORT output should output low.

DISPLAY_INIT
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW 0x03 ; Command for 4-bit interface
MOVWF LCD_DATA ;
BSF LCD_CNTL,E ; NOP
NOPBCF LCD_CNTL,E ;

CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW 0x03 ; Command for 4-bit interface
MOVWF LCD_DATA ;
BSF LCD_CNTL,E ; NOP
NOPBCF LCD_CNTL,E ;

CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW 0x03 ; Command for 4-bit interface
MOVWF LCD_DATA ;
BSF LCD_CNTL,E ; NOP
NOPBCF LCD_CNTL,E ;

CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW 0x02 ; Command for 4-bit interface
MOVWF LCD_DATA ;
BSF LCD_CNTL,E ; NOP
NOPBCF LCD_CNTL,E ;

CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ; ؛; Command sequence for 2 lines of 5x7 characters ؛CMD_SEQ MOVLW 0x02
MOVWF LCD_DATA
BSF LCD_CNTL,E ; NOP
NOPBCF LCD_CNTL,E ;
MOVLW 0x08 ;
MOVWF LCD_DATA ;
BSF LCD_CNTL,E ; NOP
NOPBCF LCD_CNTL,E ; ؛; Busy Flag should valid after this point ؛CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW DISP_OFF ;
CALL SEND_CMD ;
MOVLW CLR_DISP ;
CALL SEND_CMD ;
MOVLW ENTRY_INC ;
CALL SEND_CMD ;
MOVLW DISP_ON_C ;
CALL SEND_CMD ;
MOVLW DD_RAM_ADDR ;
CALL SEND_CMD ;

; Global interrupt enable

BCF INTCON,RBIF ; Cancel keypad just in case
BCF INTCON,INTF
BSF INTCON,INTE
BSF INTCON,PEIE
BSF INTCON,GIE ; Enable all Interrupts

RTCIDLE ; IDLE THE CLOCK INTERFACE

; CLEAR THE DISPLAY IN THIS PLACE SO WE HAVE TO SHIFT 32 ZEROS INTO THE
; ispLSI 2032

BCF PORTC,3 NOPBSF PORTC,6
CLRF DISPCON
CONTI
BSF PORTC,3 NOP
NOPBCF PORTC,3
INCF DISPCON
BTFSS DISPCON,5
GOTO CONTI

IDLE
MOVLW EEFSR ; Point at start of read/write ram
MOVWF FSR ; Set up the start pointer

; BCF INTCON,GIE ; Enable all Interrupts

CALL CLEAR_DISP ;

CLRF TTTF
CLRF TTT
CLRF LSDS

MOVLW DD_RAM_ADDR
CALL SEND_CMD

MOVLW .11
CALL STRING2

MOVLW .12
CALL STRING2

MOVLW DD_RAM_AD2
CALL SEND_CMD

MOVLW .13
CALL STRING2

MOVLW .14
CALL STRING2

; BSF INTCON,GIE ; Enable all Interrupts

;--------------------------------------------------------------------------
;WAITING LOOP TO SEE IF THE USER WANT TO PROGRAM NEW DATA INTO THE BILLBOARD
;THE LOOP WILL WAIT ABOUT 8 SECONDS ,IF F8 KEY IS NOT PRESSED IN THIS DELAY
;THEN THE BILLBOARD WILL DISPLAY OLD DATA
;---------------------------------------------------------------------------

CLRF OTYO
CLRF TTT

BEGIN
CALL RTCGET ; READ FROM THE REAL TIME CLOCK

BTFSS RTCS,0
GOTO GEN

BTFSC OTYO,0
GOTO TEN

BSF OTYO,0
INCF TTT

BEN
BTFSC TTT,3
GOTO AFF11
GOTO TEN الجنرالBCF OTYO,0

TEN
CALL GETKE1
BNC BEGIN ; Just loop until key found

CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW 0x0A ; F8
SUBWF KTMP,W
BZ DRY

MOVLW 0x09 ; F10
SUBWF KTMP,W
BZ AFF11

GOTO BEGIN
DRY
MOVLW 0xA0
MOVWF DISPCON

DATAEN
CLRF IEE

DATAENTRY

; BCF INTCON,GIE ; Enable all Interrupts

CALL CLEAR_DISP
MOVLW DD_RAM_ADDR ;
CALL SEND_CMD

MOVFW IEE
ADDLW 0x01
CALL STRING2

MOVFW IEE
ADDLW 0x02
CALL STRING2

MOVLW DD_RAM_AD2 ;
CALL SEND_CMD

MOVFW IEE
ADDLW 0x03
CALL STRING2

MOVFW IEE
ADDLW 0x04
CALL STRING2

; BSF INTCON,GIE ; Enable all Interrupts
CLRF COLO دبي لصناعات الطيران; CALL GETKE1
; BNC DAE ; Just loop until key found

; Key in W register - parse it

; MOVLW 0xE0
; SUBWF KTMP,W
; BNZ DAE2

TRW
CALL GETKE1
BNC TRW ; Just loop until key found

CALL LCD_DELAY ;
CALL LCD_DELAY ;

MOVLW 0x75 ;UP
SUBWF KTMP,W
BZ TEW

MOVLW 0x72 ;DOWN
SUBWF KTMP,W
BNZ DAE2

MOVLW 0x0A
SUBWF IEE,W
BZ DAE
INCF IEE
INCF IEE
GOTO DATAENTRY

TEW
MOVLW 0x00
SUBWF IEE,W
BZ DAE

DECF IEE
DECF IEE
GOTO DATAENTRY

DAE2
MOVLW 0x05 ; F1 : SO PROGRAM THE RTCCLOCK WITH NEW TIME
SUBWF KTMP,W ; IN THE FORMAT HHMMSS
BZ PTIME

MOVLW 0x06 ; F2 : PROGRAM THE BILLBOARD WITH DATA THAT IS
SUBWF KTMP,W ; DISPLAYED FROM RIGHT TO LEFT (NOTE:NUMBER OF
BZ PRL ; CHARACTERS MUST BE n*16 IF NOT THE SYSTEM
; WILL COMPLETE IT WITH SPACE)

MOVLW 0x04 ; F3 : PROGRAM THE BILLBOARD WITH DATA THAT IS
SUBWF KTMP,W ; DISPLAYED FROM DOWN TO UP (NOTE:THIS MUST BE
BZ PDU ; A 12 CHARACTERS MESSAGE)
; THIS FUNCTION MAY BE PROGRAMMED MANY TIME AS
; WE WANT

MOVLW 0x0C ; F4 : PROGRAM THE BILLBOARD WITH DATA THAT IS
SUBWF KTMP,W ; DISPLAYED FROM LEFT TO RIGHT LIKE OPENING
BZ PLR ; A CURTAIN ON A MESSAGE(NOTE:THIS MUST BE A 12
; CHARACTERS MESSAGE ALSO)
; THIS FUNCTION MAY BE PROGRAMMED MANY TIME AS
; WE WANT

MOVLW 0x09 ; F10
SUBWF KTMP,W
BZ AFF11

MOVLW 0x03 ; F5 : READ THE REAL TIME CLOCK
SUBWF KTMP,W
BNZ DAE

;***********************************************************************

RRTC
; BCF INTCON,GIE ; Enable all Interrupts

CALL CLEAR_DISP
MOVLW DD_RAM_ADDR ;
CALL SEND_CMD

MOVLW .10
CALL STRING2
; BSF INTCON,GIE ; Enable all Interrupts العودةCALL DTIME

CALL DISPLAY
CALL LCD_DELAY
CALL LCD_DELAY

CALL GETKE1
BNC BACK ; Just loop until key found

GOTO DATAENTRY

;***********************************************************************

PLR
; BCF INTCON,GIE ; Enable all Interrupts
CLRF TTT
CALL CLEAR_DISP
MOVLW DD_RAM_ADDR
CALL SEND_CMD

MOVLW .8
CALL STRING2

MOVLW DD_RAM_AD2
CALL SEND_CMD

; BSF INTCON,GIE ; Enable all Interrupts

MOVFW DISPCON
MOVWF FSR
MOVLW 0x02
MOVWF INDF
INCF FSR
MOVFW FSR
MOVWF DISPCON

GOTO WAI

;***********************************************************************

PTIME
; BCF INTCON,GIE ; Enable all Interrupts

CALL CLEAR_DISP
MOVLW DD_RAM_ADDR
CALL SEND_CMD

MOVLW .2
CALL STRING2

MOVLW DD_RAM_AD2
CALL SEND_CMD

; BSF INTCON,GIE ; Enable all Interrupts

ID1
CALL GETKE1
BNC ID1
MOVFW KEYBUFF
CALL SEND_CHAR
MOVFW KEYBUFF
ANDLW 0x0F
MOVWF MSDH

ID2
CALL GETKE1
BNC ID2

 
عذرا ، لكنك في حاجة إلى تسجيل الدخول لمشاهدة هذه الضميمة

 

Welcome to EDABoard.com

Sponsor

Back
Top