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