PIC_Simulator_Simon/TPicSim Testprogramme/TPicSim7.LST

84 lines
5.2 KiB
Plaintext

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