📄 em78p458_adc_demo.lst
字号:
123 C ;----------------------------------------------------------------------------------------------------
124 C ;特殊功能寄存器位定义
125 C ;----------------------------------------------------------------------------------------------------
126 C ;sfr_CONT 控制寄存器
127 0000 C bit_PSR0 equ 0 ;TCC/WDT预分频选择位0
128 0001 C bit_PSR1 equ 1 ;TCC/WDT预分频选择位1
129 0002 C bit_PSR2 equ 2 ;TCC/WDT预分频选择位2
130 0003 C bit_PAB equ 3 ;预分频选择位0器分配位:0分配到TCC 1分配到WDT
131 0004 C bit_TE equ 4 ;TCC信号边沿选择位: 0上升沿TCC加1 1下降沿TCC加1
132 0005 C bit_TS equ 5 ;TCC信号源选择位: 0内部指令周期时钟 1外部输入时钟
133 0006 C bit_INT equ 6 ;中断允许标志位: 0已由DISI或硬件中断屏蔽中断 1已由ENI或RETI允许中断
134 0007 C bit_INTE equ 7 ;外部中断信号边沿选择位: 0上升沿 1下降沿
135 C ;sfr_G_CON 增益控制寄存器
136 0000 C bit_G10 equ 0 ;增益放大器OP1增益选择位0
137 0001 C bit_G11 equ 1 ;增益放大器OP1增益选择位1
138 0002 C bit_G12 equ 2 ;增益放大器OP1增益选择位2
139 0003 C bit_G40 equ 3 ;增益放大器OP2增益选择位0
140 0004 C bit_G41 equ 4 ;增益放大器OP2增益选择位1
141 0005 C bit_G42 equ 5 ;增益放大器OP2增益选择位2
142 0006 C bit_OPIE equ 6 ;增益放大器OP1控制位: 0 OP1关闭 1 OP1打开
143 0007 C bit_OP2E equ 7 ;增益放大器OP2控制位: 0 OP2关闭 1 OP2打开
144 C ;sfr_AD_CMP_CON AD与比较器控制寄存器
145 0000 C bit_CKR0 equ 0 ;AD时钟分频数选择0 00=1:4 01=1:16 10=1:64 11=1:128内部RC振荡频率
146 0001 C bit_CKR1 equ 1 ;AD时钟分频数选择1
147 0002 C bit_IMS0 equ 2 ;PORT6输入模式选择位0
148 0003 C bit_IMS1 equ 3 ;PORT6输入模式选择位1
149 0004 C bit_IMS2 equ 4 ;PORT6输入模式选择位2
150 0005 C bit_COE equ 5 ;比较器功能选择位 0用作运放 1用作比较器
151 0006 C bit_CE equ 6 ;比较器使能位 0关闭比较器 1打开比较器
152 0007 C bit_VREFS equ 7 ;AD参考电压选择位 0工作电压Vdd 1由P53脚输入参考电压
153 C ;sfr_WDT_CON 看门狗控制寄存器
154 0006 C bit_EIS equ 6 ;P50脚功能定义位 0 P50只能为输入 1 外部中断输入引脚/INT
155 0007 C bit_WDTE equ 7 ;WDT使能位 0禁止 1使能
156 C ;sfr_INT_IER 中断使能控制寄存器
157 0000 C bit_TCIE equ 0 ;TCC中断使能控制位 0禁止 1使能
158 0001 C bit_ICIE equ 1 ;TCC中断使能控制位 0禁止 1使能
159 0002 C bit_EXIE equ 2 ;外部中断中断使能控制位 0禁止 1使能
160 0003 C bit_ADIE equ 3 ;AD中断使能控制位 0禁止 1使能
161 0004 C bit_PWM1IE equ 4 ;PWM1中断使能控制位 0禁止 1使能
162 0005 C bit_PWM2IE equ 5 ;PWM2中断使能控制位 0禁止 1使能
163 0006 C bit_CMPIE equ 6 ;比较器中断使能控制位 0禁止 1使能
164 C ;sfr_PWM_CON PWM控制寄存器
165 0000 C bit_T1P0 equ 0 ;TMR1分频系数选择位0 00=1:2 01=1:8 10=1:32 11=1:64
166 0001 C bit_T1P1 equ 1 ;TMR1分频系数选择位1
167 0002 C bit_T2P0 equ 2 ;TMR2分频系数选择位0 00=1:2 01=1:8 10=1:32 11=1:64
168 0003 C bit_T2P1 equ 3 ;TMR2分频系数选择位1
169 0004 C bit_T1EN equ 4 ;TMR1使能 0关闭 1打开
170 0005 C bit_T2EN equ 5 ;TMR2使能 0关闭 1打开
171 0006 C bit_PWM1E equ 6 ;PWM1 使能 0 关闭 1打开
172 0007 C bit_PWM2E equ 7 ;PWM2 使能 0 关闭 1打开
173 C ;sfr_DT1H PWM1占空比高8位
174 0000 C bit_PWM18 equ 0 ;PWM1占空比第8位
175 0001 C bit_PWM19 equ 1 ;PWM1占空比第9位
176 0003 C bit_VOF10 equ 3 ;补偿电压位0
177 0004 C bit_VOF11 equ 4 ;补偿电压位1
178 0005 C bit_VOF12 equ 5 ;补偿电压位2
179 0006 C bit_SIGN1 equ 6 ;补偿电压极性选择位 0负 1正
180 0007 C bit_CALI1 equ 7 ;标准使能位 0禁止 1使能
181 C ;sfr_DT2H PWM2占空比高8位
182 0000 C bit_PWM28 equ 0 ;PWM2占空比第8位
183 0001 C bit_PWM29 equ 1 ;PWM2占空比第9位
184 0003 C bit_VOF20 equ 3 ;补偿电压位0
185 0004 C bit_VOF21 equ 4 ;补偿电压位1
186 0005 C bit_VOF22 equ 5 ;补偿电压位2
187 0006 C bit_SIGN2 equ 6 ;补偿电压极性选择位 0负 1正
188 0007 C bit_CALI2 equ 7 ;标准使能位 0禁止 1使能
189 C
190 C ;----------------------------------------------------------------------------------------------------
191 C ;用户寄存器定义
192 C ;----------------------------------------------------------------------------------------------------
193 0010 C register_START equ 0x10 ;通用寄存器开始地址
194 003F C register_END equ 0x3f ;通用寄存器结束地址
195 C
196 C
11
12 ;-------------------------------------------------------------------------------------------------
13 ;EM78P458寄存器定义
14 ;-------------------------------------------------------------------------------------------------
15 ; register_AD_CON equ 0x09 ;AD控制寄存器
16 ; register_G_CON equ 0x09 ;增益控制寄存器
17 ; register_AD_CMP_CON equ 0x0a ;AD与比较器控制寄存器
18 ; register_AD_DATA equ 0x0a ;ADC转换结果 寄存器
19 ; register_INT_FLAG equ 0x0f ;中断标志寄存器
20
21 ;-------------------------------------------------------------------------------------------------
22 ;EM78P458寄存器位定义
23 ;-------------------------------------------------------------------------------------------------
24 ; bit_AD_RUN equ 0x04 ;AD启动位
25 ; bit_AD_PD equ 0x03 ;AD功耗模式位
26
27 ;-------------------------------------------------------------------------------------------------
28 ;POWER ON 跳转
29 ;-------------------------------------------------------------------------------------------------
30 ORG 0x00
31 0000 140A jmp MAIN
32
33 ;-------------------------------------------------------------------------------------------------
34 ;中断服务程序
35 ;-------------------------------------------------------------------------------------------------
36 ORG 0x08
37 0008 INTERRUPT_SERVE_ROUTINE: ;中断服务程序
38 0008 00CF clr register_INT_ISR ;清除中断标志
39 0009 0013 reti
40
41 ;-------------------------------------------------------------------------------------------------
42 ;主程序
43 ;-------------------------------------------------------------------------------------------------
44 000A MAIN:
45 000A 1808 mov A,@0x08 ; 选择寄存器段0,并设置P60为输入口
46 000B 0049 mov register_AD_CON,A
47
48 000C 1801 mov A,@0x01 ;选择通道0,并设置转换时钟频率为Fosc/16
49 000D 000A iow sfr_AD_CMP_CON
50
51 000E 1800 mov A,@0x00 ;关闭运放OP1,信号直接旁路到AD
52 000F 0009 iow sfr_G_CON
53
54 0010 0AC9 bs register_AD_CON,bit_ADPD ;禁止AD的低功耗模式
55 0011 0010 eni
56
57 0012 START_AD_CONVERT:
58 0012 0B09 bs register_AD_CON,bit_ADRUN ;启动AD
59
60 0013 WAIT_CONVERT:
61 0013 0D09 jbc register_AD_CON,bit_ADRUN ;是否转换结束?
62 0014 1413 jmp WAIT_CONVERT ;未结束则继续检测
63
64 0015 040A mov A,register_AD_DATA ;读AD转换结果
65
66 0016 1412 jmp START_AD_CONVERT ;不停地 采样
0 Error(s), 0 Warning(s), 0 User Message(s)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -