This repository was archived by the owner on May 12, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchipTester.asm
More file actions
174 lines (134 loc) · 2.64 KB
/
Copy pathchipTester.asm
File metadata and controls
174 lines (134 loc) · 2.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include <P16F887.INC>
#include "PrintMacros.inc"
#include "TestVectorMacro.inc"
cblock 0x20
Delay1, Delay2, Delay3, Output,
LastCO, LastDO, LastCI, LastDI, LastCT, LastDT, CEXP, DEXP
FailFlag
endc
org 0x00
call Set16F887
banksel TRISA
movlw 0xFF
movwf TRISA
clrf TRISB
movwf TRISC
movwf TRISD
clrf TRISE
banksel 0x00
call SetLCD
;Run test vectors: CTRIS, DTRIS, COUT, DOUT, CEXPECTED, DEXPECTED
; ----------------------------
; | 5V D5 D4 D3 D2 D1 D0 |
; |(1 1) 0 0 1 0 0 1 |
; | |
; | 0 0 1 0 0 1(1 1)|
; | C0 C1 C2 C3 C4 C5 0V |
; ----------------------------
Loop:
; TestVector 0xE4, 0xC9, 0x00, 0x00, 0x00, 0x00 ;00 00 00 00 --> 0 0 0 0
; TestVector 0xE4, 0xC9, 0x12, 0x12, 0x36, 0x1B ;01 01 01 01 --> 1 1 1 1
; TestVector 0xE4, 0xC9, 0x09, 0x24, 0x2D, 0x2D ;10 10 10 10 --> 1 1 1 1
TestVector 0xE4, 0xC9, 0x1B, 0x36, 0x1B, 0x36 ;11 11 11 11 --> 0 0 0 0
goto Loop
Pass:
call Cls
PrintL 'P'
PrintL 'A'
PrintL 'S'
PrintL 'S'
call PrintTestResults
;Wait for a short while
call Delay_50ms
return
Fail:
call Cls
PrintL 'F'
PrintL 'A'
PrintL 'I'
PrintL 'L'
call PrintTestResults
;Wait for a while
call Delay_1s
return
RunTest:
;Set up the TRIS ports
movf LastCT,w
banksel TRISA
movwf TRISC
banksel 0x00
movf LastDT,w
banksel TRISA
movwf TRISD
banksel 0x00
;Set up the outputs
movf LastCO, w
movwf PORTC
movf LastDO, w
movwf PORTD
;Record the results
movf PORTC, w
movwf LastCI
movf PORTD, w
movwf LastDI
;Clear the result.
clrf FailFlag
;Check to see if C results match expected
movf LastCI, w
andlw 0x3F ;Strip out the high two bits
xorwf CEXP, w
iorwf FailFlag, f
;Check to see if D results match expected
movf LastDI, w
andlw 0x3F ;Strip out the high two bits
xorwf DEXP, w
iorwf FailFlag, f
;Clear the screen
call Cls
;Call Pass or Fail routine
movf FailFlag, f
btfss STATUS, Z
call Fail
movf FailFlag, f
btfsc STATUS, Z
call Pass
return
PrintTestResults:
;Print out CTRIS, DTRIS, COUT, DOUT in hex
PrintL ' '
PrintFHH LastCT
PrintFHL LastCT
PrintL ' '
PrintFHH LastDT
PrintFHL LastDT
PrintL ' '
PrintFHH LastCO
PrintFHL LastCO
PrintL ' '
PrintFHH LastDO
PrintFHL LastDO
;Go to LCD line 2
movlw 0x40
movwf Output
call LCDGoto
;Print out CEXP, DEXP, CIN, DIN, FailFlag
PrintFHH CEXP
PrintFHL CEXP
PrintL ' '
PrintFHH DEXP
PrintFHL DEXP
PrintL ' '
PrintFHH LastCI
PrintFHL LastCI
PrintL ' '
PrintFHH LastDI
PrintFHL LastDI
PrintL ' '
PrintFHH FailFlag
PrintFHL FailFlag
return
#include "HexASCII.inc"
#include "16F887_setup.inc"
#include "delay_8.inc"
#include "LCD.inc"
end