📄 testboard_rec.lst
字号:
1: #include <pic.h>
2: #include <pic16630.h>
3:
4: /**************端口定义**************
5: ************************************/
6: #define ready RA0 //用户IO端口0
7: #define port1 RA1 //用户IO端口1
8: #define SCB RA2 //用户IO端口2
9: #define SCB_T TRISA2
10: #define port3 RA3 //用户输入端口
11: #define incsel RA4 //按键DEC
12: #define decent RA5 //按键INC
13: #define dis_clk RC0 //显示数据输出时钟
14: #define dis_data RC1 //显示数据输出端口
15: #define dis_rs RC2 //显示命令/数据选择
16: #define dis_en RC3 //显示使能控制
17: #define txd RC4 //URAT发送端
18: #define rxd RC5 //URAT接收端
19: #define buzz RC5 //蜂鸣器
20:
21: /********特殊寄存器初始化参数********
22: ************************************/
23: #define TRISA_CODE 0X3E
24: /* TRISA
25: 5 4 3 2 1 0
26: I I I I I O
27: | | | | | |->用户端口0
28: | | | | |----->用户端口1
29: | | | |--------->用户端口2
30: | | |------------->用户输入端口2
31: | |----------------->按键输入1
32: |--------------------->按键输入2
33: */
34: #define IOCA_CODE 0X00
35: #define TRISC_CODE 0X00
36: /* TRISC
37: 5 4 3 2 1 0
38: O O 0 0 0 0
39: | | | | | |->显示时钟输出
40: | | | | |----->显示数据输出
41: | | | |--------->命令/数字选择
42: | | |------------->LCD EN使能
43: | |----------------->TXD
44: |--------------------->BUZZ(RXD)
45: */
46: #define WPUA_CODE 0X35 //A口弱上拉
47: #define ANSEL_CODE 0X00 //A/D模拟/数字端口选择
48: /* ANSEL
49: 7 6 5 4 3 2 1 0
50: | | | | | | | |->RA0
51: | | | | | | |----->RA1
52: | | | | | |--------->RA2
53: | | | | |------------->RA4
54: | | | |----------------->RC0
55: | | |--------------------->RC1
56: | |------------------------->RC2
57: |----------------------------->RC3
58: */
59: #define OPTION_CODE 0X07
60: /* OPTION
61: 7 6 5 4 3 2 1 0
62: | | | | | | | |->\
63: | | | | | | |------->T0前分频选择
64: | | | | | |--------->/
65: | | | | |------------->预分频使用选择(为0时T0使用)
66: | | | |----------------->T0记数边沿选择(0为上边沿触发)
67: | | |--------------------->T0计数来源选择(为1RA2输入)
68: | |------------------------->INT中断边沿选择(0为下降沿触发)
69: |----------------------------->A口弱上拉控制(为0打开)
70: */
71: #define PIE1_CODE 0x00
72: /* PIE1
73: 7 6 5 4 3 2 1 0
74: | | | | | | | |->TMR1IE定时器1中断控制
75: | | | | | | |----->
76: | | | | | |--------->
77: | | | | |------------->CMIE比较器中断控制
78: | | | |----------------->
79: | | |--------------------->
80: | |------------------------->ADIE模数变换中断控制
81: |----------------------------->EEIE内部EEROM中断控制
82: */
83: #define ADCON1_CODE 0x00
84: //AD变换工作时钟选择,选择标准以转换时间>1.6uS为准,基准时钟是主振荡频率
85: #define VRCON_CODE 0x00
86: //比较器控制
87: #define PORTA_CODE 0X00
88: #define PORTC_CODE 0X00
89: #define INTCON_CODE 0X40
90: /* INTCON
91: 7 6 5 4 3 2 1 0
92: | | | | | | | |->A口中断标志
93: | | | | | | |----->INT中断标志
94: | | | | | |--------->T0中断标志
95: | | | | |------------->A口变化中断允许
96: | | | |----------------->INT中断允许
97: | | |--------------------->T0中断允许
98: | |------------------------->外部中断总控制
99: |----------------------------->中断总控制
100: */
101: #define T1CON_CODE 0X00
102: /* T1CON
103: 7 6 5 4 3 2 1 0
104: | | | | | | | |->
105: | | | | | | |----->T1外部计数门控位(0开计数,1外部控制为0时计数)
106: | | | | | |--------->\
107: | | | | |--------------->前分频选择
108: | | | |----------------->LP外部时钟选择(1使能外部时钟)
109: | | |--------------------->外部时钟同步选择(0同步输入)
110: | |------------------------->时钟来源选择(0为内部时钟,1为RA5输入)
111: |----------------------------->计数控制位(1开始计数)
112: */
113: #define ADCON0_CODE 0x00
114: /* ADCON0
115: 7 6 5 4 3 2 1 0
116: | | | | | | | |->数据格式选择(为0数据靠高端)
117: | | | | | | |----->基准电压选择(为1由RA1提供)
118: | | | | | |--------->
119: | | | | |------------->\
120: | | | |------------------->通道选择
121: | | |--------------------->/
122: | |------------------------->AD变换启动位(为1启动,硬件清零)
123: |----------------------------->AD模块电源控制(为1开启)
124: */
125: #define CMCON_CODE 0X07
126: //关闭比较器功能
127:
128: /***************常数定义*************
129: ************************************/
130: // const unsigned char welcome_words[]="PICMCU software test";
131: // const unsigned char type_words[]=" Ver 1.0 051210";
132:
133: /***************变量定义*************
134: ************************************/
135: static volatile unsigned char discpsw0; //碟机状态
136: static volatile unsigned char discpsw1;
137: static volatile unsigned char discpsw2;
138: static volatile unsigned char discpsw3;
139: static volatile unsigned char discpsw4;
140: static volatile unsigned char discpsw5;
141: static volatile unsigned char discpsw6;
142: static volatile unsigned char discpsw7;
143: static volatile unsigned char softpsw;
144: /* softpsw
145: 7 6 5 4 3 2 1 0
146: | | | | | | | |->数据读取标志(为1正在读取)
147: | | | | | | |----->数据准备好标志(为1准备好)
148: | | | | | |--------->显示标志
149: | | | | |------------->
150: | | | |----------------->
151: | | |--------------------->
152: | |------------------------->
153: |----------------------------->
154: */
155: static volatile unsigned char nowdisc;
156: static volatile unsigned char nowtrackH;
157: static volatile unsigned char nowtrackL;
158: static volatile unsigned char nowminH;
159: static volatile unsigned char nowminL;
160: static volatile unsigned char nowsecH;
161: static volatile unsigned char nowsecL;
162: static volatile unsigned char playpsw;
163: /* playpsw
164: 7 6 5 4 3 2 1 0
165: | | | | | | | |->为1扫描播放
166: | | | | | | |----->
167: | | | | | |--------->
168: | | | | |------------->
169: | | | |----------------->
170: | | |--------------------->
171: | |------------------------\
172: |----------------------------->00无重复,01重复单曲,10重复所有
173: */
174: // static volatile unsigned char playpar[]=" D- T- :";
175: // static volatile unsigned char playstate[]=" ALP Changer";
176:
177: /******************************************
178: 特殊寄存器设置函数;sfr_setup
179: 作用:初始化内部特殊寄存器;
180: 入口:无;
181: 出口:无;
182: *******************************************/
183: void sfr_setup(void)
184: {
185: //BANK1
186: TRISA=TRISA_CODE;
187: TRISC=TRISC_CODE;
188: OPTION=OPTION_CODE;
189: PIE1=PIE1_CODE;
190: ANSEL=ANSEL_CODE;
191: ADCON1=ADCON1_CODE;
192: IOCA=IOCA_CODE;
193: WPUA=WPUA_CODE;
194: //BANK0
195: PORTA=PORTA_CODE;
196: PORTC=PORTC_CODE;
197: INTCON=INTCON_CODE;
198: T1CON=T1CON_CODE;
199: ADCON0=ADCON0_CODE;
200: CMCON=CMCON_CODE;
201: }
202: /******************************************
203: LCD操作延时函数d256us();
204: 作用:延时256uS;
205: 入口:无;
206: 出口:无;
207: 说明:用于LCD的操作延时
208: *******************************************/
209: void d256uS(void)
210: {
211: unsigned char i;
212: for(i=83;i>0;i--);
213: }
214: /******************************************
215: 延时函数d4ms();
216: 作用:延时4ms
217: 入口:无
218: 出口:无
219: 说明:用于LCD初始化
220: ******************************************/
221: void d4mS(void)
222: {
223: unsigned int i;
224: for(i=443;i>0;i--);
225: }
226: /******************************************
227: 延时函数d10ms();
228: 作用:延时10ms
229: 入口:无
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -