/[H9]/trunk/Embedded/main.lst
ViewVC logotype

Diff of /trunk/Embedded/main.lst

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 100 by hedin, Thu Nov 29 13:23:57 2007 UTC revision 112 by hedin, Fri Nov 30 16:07:03 2007 UTC
# Line 1  Line 1 
1       1: #include <pic18.h>       1: #include <pic18.h>
2       2: #include <stdio.h>       2: #include <stdio.h>
3       3: #include <string.h>       3: #include <string.h>
4       4:       4: #include "lcd.h"
5       5: #include "lcd.h"       5: // Delay.h is included inside lcd.c
6       6:       6:
7       7: void AD_init(void)       7: #define LCD_LENGTH 16
8       8: {       8: #define LCD_ROWS 2
9       9:         ADON    = 1;       9:
10      10: }      10:
11      11:      11: unsigned char global_Pot_Hi;
12      12: void rs232_init(void)      12: unsigned char global_Pot_Lo;
13      13: {      13: unsigned char global_LCD_Buffer[LCD_ROWS][LCD_LENGTH];
14      14:         SPEN    = 0;    // Serial Port Enable Bit... 0 = disabled      14: /*void AD_init(void)
15      15:         TRISC6  = 0;      15: {
16      16:         TRISC7  = 1;      16:         ADON    = 1;
17      17:         SYNC    = 0;    // SYNC switches between async(0) and sync(1) mode.      17: }
18      18:         SPBRG   = 25;      18: */
19      19:         TXSTA   = 0x24;      19: // Nicked from H7
20      20:         RCSTA   = 0x90;      20: void ad_init(void)
21      21:         SPEN    = 1;      21: {
22      22: }      22:         // AD Conversion clock
23      23:      23:         ADCS0 = 0;
24      24: void interrupt_init(void)      24:         ADCS1 = 0;
25      25: {      25:         ADCS2 = 0;
26      26:         // Assumes that all interrupts default is 0      26:
27      27:         PEIE    = 1;      27:         //Select AN0/RA0 for AD source
28      28:         GIE             = 1;      28:                 // In this (000) setup, it's only RA0/AN0 that does ad convertion.
29      29:         RCIE    = 1;      29:         CHS0=0;
30      30: }            30:         CHS1=0;
31      31:      31:         CHS2=0;
32      32: void pic18_io_init(void)      32:        
33      33: {      33:         //Only AN0 is selected for AD and with Vdd/Vss as limits
34      34:         TRISA0  = 1;      34:         PCFG0=0;
35      35:         TRISB1  = 1;      35:         PCFG1=1;
36      36:         TRISB2  = 1;      36:         PCFG2=1;
37      37:         TRISB3  = 1;      37:         PCFG3=1;
38      38:         TRISB4  = 1;      38:        
39      39: }            39:         //Result is left justified
40      40:      40:         ADFM=0;
41      41: void interrupt_recieve_handler(void)      41:        
42      42: {      42:         //Fire up for A/D converter module
43      43:         // Handle recieve inputs...      43:         ADON=1;
44      44: }      44: }
45      45:      45:
46      46: void interrupt interrupt_handler(void)      46: void rs232_init(void)
47      47: // Finds out what interrupt have been trigged, and starts the respective function.      47: {
48      48: {      48:         SPEN    = 0;    // Serial Port Enable Bit... 0 = disabled
49      49:         if(RCIF == 1)      49:         TRISC6  = 0;
50      50:         {      50:         TRISC7  = 1;
51      51:                 interrupt_recieve_handler();      51:         SYNC    = 0;    // SYNC switches between async(0) and sync(1) mode.
52      52:                 RCIF = 0;      52:         SPBRG   = 25;
53      53:         }      53:         TXSTA   = 0x24;
54      54: }                    54:         RCSTA   = 0x90;
55      55:              55:         SPEN    = 1;
56      56:      56: }
57      57: void main()      57:
58      58: {      58: void interrupt_init(void)
59      59:         AD_init();      59: {
60      60:         rs232_init();      60:         // Assumes that all interrupts default is 0
61      61:         pic18_io_init();      61:         PEIE    = 1;
62      62:              62:         GIE             = 1;
63      63:         if(GODONE==0)      63:         RCIE    = 1;
64      64:         {      64: }      
65      65:                      65:
66      66:         }      66: void pic18_io_init(void)
67      67: }      67: {
68        68:         TRISA0  = 1;    // analog input
69        69:         TRISB1  = 1;    // TRISB1-4 Digital input
70        70:         TRISB2  = 1;
71        71:         TRISB3  = 1;
72        72:         TRISB4  = 1;
73        73: }      
74        74:
75        75: void interrupt_recieve_handler(void)
76        76: {
77        77:         // Handle recieve inputs...
78        78: }
79        79:
80        80: void interrupt interrupt_handler(void)
81        81: {
82        82:         // Finds out what interrupt have been trigged, and starts the respective function.
83        83:         if(RCIF == 1)
84        84:         {
85        85:                 interrupt_recieve_handler();
86        86:                 RCIF = 0;
87        87:         }
88        88: }              
89        89:
90        90: void update_lcd(void)
91        91: {      
92        92:         char toLCD0[LCD_LENGTH], toLCD1[LCD_LENGTH];
93        93:         char B1[LCD_LENGTH];
94        94:         char sprintF[LCD_LENGTH];
95        95:         lcd_goto(0x00);
96        96:         sprintf(toLCD0, "%s", "Ejdesgaard");
97        97:         if(RB1)
98        98:         {
99        99:                 sprintf(B1, "Pwr%s", "True");
100       100:         }
101       101:         else
102       102:         {
103       103:                 sprintf(B1, "%s", "False");
104       104:         }
105       105:         lcd_puts(B1);
106       106:        
107       107:         lcd_goto(0x40);
108       108:         sprintf(sprintF,"%08d%08d", global_Pot_Hi, global_Pot_Lo);
109       109:         lcd_puts(sprintF);
110       110:        
111       111: }
112       112:
113       113: void main()
114       114: {
115       115: /////////////////////////////////////////////
116       116: // Running Init's
117       117:
118       118:         // Running init for various components.
119       119:         //AD_init();
120       120:         ad_init();
121       121:         rs232_init();
122       122:         pic18_io_init();
123       123:         lcd_init(0);
124       124:
125       125: /////////////////////////////////////////////
126       126: // Main loop
127       127:
128       128:         while(1)
129       129:         {
130       130:         // Checking if A/D convertion is done, and save the data in global_Pot_??
131       131:                 if(GODONE==0)
132       132:                 {
133       133:                         global_Pot_Hi = ADRESH;
134       134:                         global_Pot_Lo = ADRESL;
135       135:                         GODONE = 1;
136       136:                 }
137       137:                
138       138:         update_lcd();
139       139:         }
140       140: }

Legend:
Removed from v.100  
changed lines
  Added in v.112

  ViewVC Help
Powered by ViewVC 1.1.20