2017-05-10 12:00:41 +02:00
|
|
|
|
00001 ;TPicSim7
|
|
|
|
|
00002 ;Programm zum Test des 16F84-Simulators.
|
|
|
|
|
00003 ;Es wird der Timer0 mit und ohne Vorteiler gepr<70>ft
|
|
|
|
|
00004 ;(c) St. Lehmann Ersterstellung: 23.01.2003
|
|
|
|
|
00005 ;19.04.2014 <20>berarbeitet
|
|
|
|
|
00006
|
|
|
|
|
00007 list c=132 ;Zeilenl<6E>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<72>hen VT = 1:4
|
|
|
|
|
00023 ;somit wird nach jedem 4. Befehlstakt (Achtung GOTO etc) TMR0 erh<72>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<72>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<65>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
|