📄 lab2.lst
字号:
1:
2: /****************************************************************
3: * Hi-Tech workshop exercise Lab2 *
4: *****************************************************************
5: * The program will display a binary count value on PORTD (LED) *
6: * every delay 200mS *
7: * *
8: * Files required: *
9: * *
10: * lab2.c *
11: * MID_LCD.c *
12: * cnfig877a.h (Set the Configuration Word) *
13: * *
14: * pic.h (Hi-Tech file) *
15: * *
16: *****************************************************************
17: * *
18: * Notes: *
19: * *
20: * Device Fosc -> 16.00MHz (Clock supplied by target) *
21: * *
22: *****************************************************************/
23:
24: #include <pic.h> // processor if/def file
25: #include "cnfig877a.h"
26: #include "mid_lcd.h"
27:
28: //**********************************
29: //* Function Prototype Declaration
30: //**********************************
31:
32:
33: // ================================================================
34: // **** Establish PIC16F877A Configuration Word
35: // **** == HS Oscillator Mode
36: // **** == Brown-Out Detect Enabled
37: // **** == Watch-Dog Timer Off
38: // **** == Code Protect Off
39: // **** == Low Voltage Programming Off
40: // **** == ICD2 Debug Mode On
41:
42: __CONFIG ( HS_OSC & BODEN_ON & WDT_OFF & CP_OFF & LVP_OFF & DEBUG_ON );
43:
44: // =================================================================
45:
46:
47: #define SW3 RA4
48: #define SW2 RB0
49:
50: const char LCD_Msg1[]="Hi-Tech PICC Ex2";
51: const char LCD_Msg2[]=" Up:00 Down:00 ";
52: unsigned char i;
53: unsigned char debounce=0;
54: unsigned char Up_Count=0;
55: unsigned char Down_Count=0;
56:
57: /*****************************
58: INITIALIZE SYSTEM
59: *****************************/
60:
61: void Init_System(void)
62: {
63: ADCON1=0b00000110; // Disable A/D Function
64: TRISD=0x00; // Set PortD for Output
65: PORTD=0x80; // Initila LED display = 0x80
66: TRISA4=1; // Set SW2 for input
67: TRISE1=1; // Set SW6 for Input
68: }
69:
70: //***************************************
71: //* Program Main ( ) *
72: //***************************************
73: void main(void)
74: {
75: Init_System();
76: OpenLCD();
77: LCD_Set_Cursor(0,0);
78: putrsLCD(LCD_Msg1);
79: LCD_Set_Cursor(0,1);
80: putrsLCD(LCD_Msg2);
81:
82: while(1)
83: {
84: if (debounce==0)
85: {
86: if (!SW3)
87: {
88: PORTD++;
89: LCD_Set_Cursor(4,1);
90: puthexLCD(++Up_Count);
91: debounce=30;
92: }
93: if (!SW2)
94: {
95: PORTD--;
96: LCD_Set_Cursor(13,1);
97: puthexLCD(--Down_Count);
98: debounce=30;
99: }
100: }
101: else
102: {
103: if (SW3 & SW2)
104: {
105: debounce--;
106: for (i=0;i<50;i++);
107: }
108: else
109: debounce=30;
110: }
111: }
112:
113: }
114:
115:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -