【官方微信小程序】
香港齐芯科技有限公司
主营产品:单片机、触摸IC、方案开发
认证过期

企业资料

普通商铺

香港齐芯科技有限公司

联系人:唐生(销售经理)

   

固 话:0852-31757377

手 机:13392865829

产品搜索

ADC中的顺序查表

ADC中的顺序查表

说明:在做温度检测并由数码管显示的时候由于一个温度对应一个 AD值,而我们的 AD 值是在一段时间的平均值,很大一部分 AD 在表中是不能够一对一对应的,所以我们只能取隔他最近的 AD,此为 AD 转换后用于查表的顺序程序,这样查表很容易理解,但是也存在很不不足,比如 CPU 在此程序运行周期长等等,当然我会在以后会添加

输入:高位 AD_Data_high,低位 AD_Data_low,

输出:数码管显示的数值  b_room_temp

.data//把 AD 值转换成数值,
 ad_new_tab ds 1   ;查表的地址给A(如 0 1 2 74 99 105之类的,比如99就对应的是99度)
 ad_old_tab ds 1   ;旧
 ad_old_h ds 1   ;旧值的高位
 ad_old_l ds 1   ;旧值的低位
 ad_new_h ds 1   ;新值的高位
 ad_new_l ds 1   ;新值的低位
 ad_mean_h ds 1   ;平均值的高位
 ad_mean_l ds 1   ;平均值的低位
 b_room_temp ds 1   ;显示的数值,是十进制的
////////////////////////////////////////////////////////
.code
ad_change:
////////////////////////////////////////////////////////;;这里可以单独检查其他程序的错误性
/*    MOV    a,  #0x0f   ;;
 B0MOV   AD_Data_High, a   ;;ad数据存放
        MOV    a,  #0x00b   ;;
        B0MOV   AD_Data_low, a    ;;ad数据存放     */   

   MOV_ ad_old_tab, #0
check_tab:
 b0mov y,#temp_tab$m    ;
 b0mov z,#temp_tab$l    ;
 mov a,ad_old_tab    ;查表的地址给A(如 0 1 2 74 99 105之类的,比如99就对应的是99度)
 b0add z,a     ;
 b0bts0 fc     ;
 incms y     ;
 nop      ;
 movc      ;
 mov ad_old_l,a    ;低8位存放在temp_l中
 mov a,r     ;高4位存放在temp_h中
 mov ad_old_h,a    ;
////////////////////////////////////////////////////////;把旧值赋给新值,这里是为平均那里作准备
 mov     a,  ad_old_l
 mov     ad_new_l, a 
 mov     a,  ad_old_h
 mov     ad_new_h, a
 mov     a,  ad_old_tab
 mov     ad_new_tab, a                
////////////////////////////////////////////////////////
 cjne_  AD_Data_high, ad_new_h, ad_change10;判断高位是否相等,不等跳转到 ad_change10 继续查找 
 cjne_  AD_Data_low, ad_new_l, ad_change10;如果高位相等,那比较低位,如果不等,跳转到ad_change10    
 mov_ b_room_temp, ad_new_tab    
 jmp ad_change_exit              ;如果刚好 等于 则把 b_ad_tab 给 b_room_temp, 然后跳出程序
/////////////////////////////////////////////////////////  ;如果不等
ad_change10:
 cjae2 AD_Data_High,AD_Data_Low,ad_new_h,ad_new_l,ad_change30
///////////////////////////////////////////////////////// 当小              
ad_change20:       
 incms ad_old_tab         
 jmp check_tab
///////////////////////////////////////////////////////// 当大
ad_change30:      ;先判断是否超出范围(00-99),如果在的话查出上一次的值
 cjae2 AD_Data_High,AD_Data_Low,#0x0f,#0x17,ad_change70 ;0度的 AD 值为0xf16,防止下于 0度
 cjbe2 AD_Data_High,AD_Data_Low,#0x3,#0xd2,ad_change80 ;100 度的AD 值为0x3d3,防止超过 99度

 decms ad_old_tab
 b0mov y,#temp_tab$m    ;
 b0mov z,#temp_tab$l    ;
 mov a,ad_old_tab    ;查表的地址给A(如 0 1 2 74 99 105之类的,比如99就对应的是99度)
 b0add z,a     ;
 b0bts0 fc     ;
 incms y     ;
 nop      ;
 movc      ;
 mov ad_old_l,a    ;低8位存放在temp_l中
 mov a,r     ;高4位存放在temp_h中
 mov ad_old_h,a
/////////////////////////////////////////////////////////上次(大)的减去这次(小)的值,得的值再平均一下,再加上现在 Ad 的低位
 mov a,  ad_old_h  ;平均值的高位
 sub a,  ad_new_h
 mov x,  a 
  b0bclr fc    
        rrcm    x
 add_ x,  ad_new_h                     
 mov_ ad_mean_h, x
 
 mov a,  ad_old_l  ;平均值的低位
 sub a,  ad_new_l
 mov x,  a 
  b0bclr fc    
        rrcm    x
 add_ x,  ad_new_l                     
 mov_ ad_mean_l, x
/////////////////////////////////////////////////////////看采样的 AD 值更靠那一边,那个距离短 就取那个值
 cjae2 AD_Data_High,AD_Data_Low,ad_mean_h,ad_mean_l,ad_change60 
/////////////////////////////////////////////////////////取新值,,比如一个AD为86,80和90的平均值为85,86>85,则选择90
ad_change50:      ;(AD大的,温度小的)
 mov_ b_room_temp, ad_new_tab     
 jmp ad_change_exit                                             
/////////////////////////////////////////////////////////取旧值
ad_change60:      ;(AD大的,温度小的)
 mov_ b_room_temp, ad_old_tab    
 jmp ad_change_exit
/////////////////////////////////////////////////////////// 小于 00
ad_change70:
 mov_ b_room_temp, #0    
 jmp ad_change_exit
///////////////////////////////////////////////////////////  大于 99
ad_change80:
 mov_ b_room_temp, #99    
 jmp ad_change_exit
/////////////////////////////////////////////////////////
ad_change_exit:
  ret

内容声明:
1、页面所展示的企业/产品信息均来自网络114企业用户自行发布,其真实性、准确性和合法性均由企业用户负责。
2、网络114提醒您购买产品/服务前注意谨慎核实,如您对产品/服务的标题、价格、详情等任何信息有任何疑问的,请在购买前通过电话/QQ/微信等沟通确认。
3、网络114提醒您所有预付定金或付款至个人账户的行为,均存在诈骗风险,请提高警惕。
4、如您发现页面内有任何违法/侵权信息,请立即向网络114举报并提供有效线索。