00001 ;TPicSim7 00002 ;Programm zum Test des 16F84-Simulators. 00003 ;Es wird der Timer0 mit und ohne Vorteiler geprüft 00004 ;(c) St. Lehmann Ersterstellung: 23.01.2003 00005 ;19.04.2014 überarbeitet 00006 00007 list c=132 ;Zeilenlänge im LST auf 132 Zeichen setzen 00008 00009 ;Definition einiger Symbole 00010 indirect equ 0 00011 status equ 03h 00012 fsr equ 04h 00013 ra equ 05h 00014 rb equ 06h 00015 count equ 0ch 00016 00017 ;Definition des Prozessors 00018 device 16F84 00019 ;Festlegen des Codebeginns 00020 org 0 00021 start 00022 ;zuerst Timer0 intern durch den Befehlstakt erhöhen VT = 1:4 00023 ;somit wird nach jedem 4. Befehlstakt (Achtung GOTO etc) TMR0 erhöht 0000 3001 00024 movlw 00000001B ;Option-Register entsp. initialisieren 0001 1683 00025 bsf status,5 ;Bank umschalten 0002 0081 00026 movwf 1 ;Option-Register 0003 1283 00027 bcf status,5 0004 3001 00028 movlw 1 ;Timer 1 auf 1 0005 0081 00029 movwf 1 0006 0190 00030 clrf 10h ;zähler 00031 loop1 0007 0000 00032 nop 0008 0000 00033 nop 0009 0000 00034 nop 000A 0A90 00035 incf 10h 000B 0801 00036 movf 1,w ;lese Timerwert aus 000C 1D03 00037 btfss status,2 ;wenn Timer = 0, dann fertig 000D 2807 00038 goto loop1 00039 ;num muss 80H in 10h stehen 00040 00041 ;nun mit einem VT = 1:16 00042 ;somit wird nach jedem 16. Befehlstakt (Achtung GOTO etc) TMR0 erhöht 000E 3003 00043 movlw 00000011B ;Option-Register entsp. initialisieren 000F 1683 00044 bsf status,5 ;Bank umschalten 0010 0081 00045 movwf 1 ;Option-Register 0011 1283 00046 bcf status,5 0012 3001 00047 movlw 1 ;Timer 1 auf 1 0013 0081 00048 movwf 1 0014 0190 00049 clrf 10h ;zähler 00050 loop2 0015 0A90 00051 incf 10h 0016 0801 00052 movf 1,w ;lese Timerwert aus 0017 1D03 00053 btfss status,2 ;wenn Timer = 0, dann fertig 0018 2815 00054 goto loop2 00055 ;num muss 31H in 10h stehen 00056 ;***************************************************************** 00057 ;jetzt wird der Timer0 durch den externen Takt an RA4 hochgezählt. 00058 ;zuerst ohne VT, damit zählt jede fallende Flanke an RA 0019 3038 00059 movlw 00111000B ;Option-Register initialisieren 001A 1683 00060 bsf status,5 001B 0081 00061 movwf 1 ;Wert ins Option-Register 001C 1283 00062 bcf status,5 001D 0181 00063 clrf 1 ;Timer löschen 00064 loop3 001E 1E01 00065 btfss 1,4 ;bis im Timer0 der Wert 16 erreicht wird 001F 281E 00066 goto loop3 00067 00068 ;jetzt auch mit VT 1:4, damit zählt jede 4. fallende Flanke an RA 0020 3031 00069 movlw 00110001B ;Option-Register initialisieren 0021 1683 00070 bsf status,5 0022 0081 00071 movwf 1 ;Wert ins Option-Register 0023 1283 00072 bcf status,5 0024 0181 00073 clrf 1 ;Timer löschen 00074 loop4 0025 1D81 00075 btfss 1,3 ;bis im Timer0 der Wert 8 erreicht wird 0026 2825 00076 goto loop4 00077 00078 ;****************************************************************** 00079 00080 ende 0027 2827 00081 goto ende ;Endlosschleife, verhindert Nirwana 00082 00083