Hallo habe da eine Frage ich bringe einfach das unten stehende Programm nicht zu laufen und zwar am GPIO 0-3 ist ein BCD Schalter den ich Abfrage und dann denn Wert in die Zeitschleife reinschreibe und dann soll am GPIO5 für diese Dauer ein Signal ausgegeben werden, ein Signal kommt auch aber die Dauer verändert sich nicht wenn ich den Schalter drehe. Ich bitte um eure Hilfe.
1 | List p=12f629 |
2 | #include <p12f629.inc> |
3 | |
4 | |
5 | |
6 | __CONFIG _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_CLKOUT & _BODEN_OFF |
7 | |
8 | |
9 | |
10 | bsf STATUS, RP0 |
11 | call 0x3FF |
12 | movwf OSCCAL |
13 | bcf STATUS, RP0 |
14 | |
15 | bsf STATUS,RP0 |
16 | movlw d'255' |
17 | movwf CMCON |
18 | movlw b'00011111' |
19 | movwf TRISIO |
20 | bcf STATUS,RP0 |
21 | |
22 | clrf GPIO |
23 | clrf 20h |
24 | |
25 | |
26 | Start: movf GPIO,w |
27 | movwf 30h |
28 | movlw b'00001111' |
29 | andwf 30h,f |
30 | swapf 30h,w |
31 | call Geschwindigkeit |
32 | movwf 20h |
33 | bsf GPIO,5 |
34 | call Zeit |
35 | bcf GPIO,5 |
36 | |
37 | |
38 | |
39 | |
40 | Geschwindigkeit: addwf PCL,f |
41 | retlw d'16' |
42 | retlw d'32' |
43 | retlw d'48' |
44 | retlw d'64' |
45 | retlw d'80' |
46 | retlw d'96' |
47 | retlw d'112' |
48 | retlw d'128' |
49 | retlw d'144' |
50 | retlw d'160' |
51 | retlw d'176' |
52 | retlw d'192' |
53 | retlw d'208' |
54 | retlw d'224' |
55 | retlw d'240' |
56 | retlw d'255' |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | Zeit: movlw d'255' |
63 | movwf 26h |
64 | l2: movf 20h,w |
65 | movwf 27h |
66 | l1: nop |
67 | nop |
68 | nop |
69 | nop |
70 | nop |
71 | nop |
72 | nop |
73 | decfsz 27h,f |
74 | goto l1 |
75 | decfsz 26h,f |
76 | goto l2 |
77 | return |
78 | |
79 | end |