咱们的ADC0809电压表
nt)*100); } ///////定时器初始化函数////// void timer_init() { IE = 0x8a; TH0 TL0 TR0 TH1 = -50000/256; TL1 = -50000%6; } ///////主函数////// int main () { timer_init();//初始化定时器 while(1) { keyscan();//矩阵键盘扫描赋值 if (1 == keynum || 2 == keynum || 3== keynum) //当有键按下时,启动ADC转换 ADC(P2); else //否则显示四个0 { disp(); disp_in(0); } } return 0; } ///////1S显示切换的定时中断函数(T1)////// void TIMER(void) interrupt 3 { static uchar timer; timer++; if (20 == timer) { timer = 0; shift = !shift;//用于两位的1S显示切换 } } ///////提供给ADC芯片CLOCK的定时函数(T0)////// void OTHER_CLOCK(void) interrupt 1 { CLK = !CLK; } 说说主要遇到的问题和学到的东西:一个是因为用了等待查询方式来读取ADC0809的AD转换结果,加上矩阵键盘和38译码器选址,导致两个问题: 1.各个功能的逻辑关系混乱。虽然只有几个功能模块,但是也思考了一番才有了新的程序架构。还有就是始终没能适应自顶向下的编程思维,比如会习惯先编出ADC的START信号或者选址函数,再去想用在哪里。而不是先直接构造一个ADC处理的框架,再去想细节的实现。 2.还有数码管动态显示不停闪烁。调试的时候,也老想着,应该就是这样了吧,改不了了吧,呵呵,可是解决之后再次觉得天无绝人之路啊, ADD_A = 1; ADD_B = 0; ADD_C = 0; P0 = numtable_DE[val_int]; delay(1); 团队合作的效率这次体现得很明显,特别是繁琐的画图,可是因为大家实践比较少,结果很不幸犯了很基础的错误,导致成品没有成功。不知道以后还有机会合作不
ADC0809电压 相关文章:
- ADC0809电压表 数据采集与处理方法(11-28)
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)