8251单片机测量电压实验报告_第1页
8251单片机测量电压实验报告_第2页
8251单片机测量电压实验报告_第3页
8251单片机测量电压实验报告_第4页
8251单片机测量电压实验报告_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、8251单片机测量电压实验报告8259实验报告设计思路:程序整体上分为三个部分:键盘输入部分:AD 转换部分:AD 转换共有两种触发方式:执行HSO 的0F 通道命令或者向A/D命令寄存器的GO 位写一个1,本程序采用后者,并将结果保存在0C00AH-0C00DH 中。LED 显示部分:AD 转换后的结果为2进制数,转换完以后要先转换成BCD 码,再将BCD 码转换成相应的LED 代码,然后对4个LED 进行扫描显示。程序清单:CPU 80C196KBAX EQU 20HAL EQU 20HAH EQU 21HBX EQU 22HBL EQU 22HBH EQU 23HCX EQU 24HCL

2、 EQU 24HCH EQU 25HDX EQU 26HDL EQU 26HDH EQU 27HEX EQU 28HEL EQU 28HEH EQU 29HFX EQU 2AHFL EQU 2AHFH EQU 2BHPA8255 EQU 0BF00HPB8255 EQU 0BF02HPC8255 EQU 0BF04HC8255 EQU 0BF06HHSIRES EQU 0C00AH0C00AH-0C00DH .HSIRESH EQU 0C00CHBCD EQU 0C00EHTABLE EQU 0C014H;*变量*ADSEL EQU 50HLEDSEL EQU 4FHDT EQU 4CHCHA

3、NNAL EQU 4BHTSP EQU 48HSP1 EQU 46HHSISEL EQU 45HAA EQU 44H;TEMPH EQU 43HTEMP EQU 42HSIGNAL EQU 41HCOUNT1 EQU 32HCOUNT2 EQU 30HLOOPK EQU 2EHC EQU 2DHADKEY EQU 2CHORG 20XXHDW 3500HORG 20XXH ;8255的PA 口地址 ;8255的PB 口地址 ;8255的PC 口地址 ;8255的控制字地址 ; 频率或AD 计算结果 存放地址为;BCD 码存放地址为0C00EH-0C013H . ; 段码存放地址为0C014H-

4、0C01BH ;AD 转换通道选择变量 ;LED 扫描显示位选变量 ; 延时系数 ; 显示通道号 ;TSP 地址不能为4AH ; 段码查找时的段码地址偏移量 ;HSI 通道选择变量HSISEL ; 显示清零的时间延时系数 ; ;HSI 中T1与T2之间的时间差 ;HSI 中断次数标志 ;T1与T2之间的定时器1溢出次数 ;B/BCD转换中十进制结果位数记录变量 ; 循环显示功能开动标志 ; 循环显示时的时间间隔计数器 ;AD 转换开关标志 ; 定义定时器1中服程序首地址 ; 定义HSI 中服程序首地址DW 3600H;*初始化*ORG 2080H出。LD LD LDB STB LDB LDB

5、STB LD LD LD ST ST SP ,#00C0H AX,#C8255 BL,#B BL,AX CHANNAL,#60H CL,#B CL,PC8255 CX,#HSIRES DX,#0 EX,#0 DX,CX+ EX,CXN,#1AAHSIMOD,#0SIGNALCOUNT1COUNT2ADKEYADSEL,#B ;INTPENINTMAS,#BIOC1,#B; 清AD 转换开关标志 ; 清中断挂号寄存器 ; 开HSI 和定时器1溢出中断 ;HSI 中断于保持寄存器被加载,T1溢出中断允许 ; 开中断 ; 设堆栈指针首地址 ;8255初始化. ;A,B,C 口均工作在方式0, B 口

6、做输入,A,C 口做输; 写8255控制字 ; 开始时显示第一通道 ; ;HSIRES 存储区清零 ; ; ; LDB CLRB LDB CLRB CLRB 次数变量清零 ;CLRB CLRB ;LDB CLRB LDB LDB ;HSI 事件触发方式标志N=1 ; 无HSI 事件触发的时间计数变量 ;HSI 选方式0 ;HSI 触发次数标志SIGNAL ;HSI 第一次与最后一次触发事件之间定时器溢出 EI;*主程序*MAIN: LDB AH,PC8255XORB AH,#BSTB AH,PC8255LDB AL,PB8255CMPB AL,#0FFHJE NEXT2LCALL DISPLA

7、YLDB AL,PB8255LDB AH,PC8255ANDB AH,#B ; 读PC 口状态 ;PC1,PC0两位进行异或 ; 键盘扫描移位 ; 读PB 口状态 ; 是否有键按下? ; 否,转到NEXT2 ; 是,去抖 ; 读PB 口状态 ; 读PC 口状态 ; 提取键码K3:K6:K7:NEXT2:JE CMP JE CMP JE SJMP LCALL SJMP LCALL SJMP LCALL LCALL CMPB JNE LDB JBS LDB SHR MULU ST ST LDB SJMP K3 AX,#02BFH K6 AX,#027FH K7 NEXT2 KEY3 NEXT2 K

8、EY6 NEXT2 KEY7 DISPLAY ADKEY ,#1 MAIN AL,AD AL,3,MAIN AH,ADH AX,#6 AX,#5 AX,HSIRES R0,HSIRESH ADCOM,ADSEL MAIN ; 是,转去K3 ; 是6键按下吗? ; 是,转去K6 ; 是7键按下吗? ; 是,转去K7 ; 跳转到NEXT2 ; 调用KEY3子程序 ; 跳转到NEXT2 ; 调用KEY6子程序 ; 跳转到NEXT2 ; 调用KEY7子程序 ; 调用显示子程序 ;AD 转换开关标志=1吗? ; 否,跳转到MAIN ; 是,读AD 转换结果的低8位 ;AD 转换完吗?否,跳转到MAIN

9、; 是,读AD 转换结果的高8位 ;AD 转换结果右移6位 ; 计算电压值 ; 电压值存入HSIRES 存放区 ;HSIRES 存放区的高16位为0 ; 再次开动AD 转换 ; 跳转到MAIN;*显示子程序*ORG 3000HDISPLAY:LCALL BTOBCD ; 二进制转换成BCD 码LCALL BCDTOL ;BCD 码转换成段码LDB AL,PC8255 ; 读PC 口ANDB AL,#B ; 高3位清零,PC0,PC1位不变LDB LEDSEL,AL ; 指向最右一个LEDLDB TSP ,#0 ; 指向第一个显示段码LDB CL,#8 ;LED 扫描次数=8LOOP: LDB

10、BL,#0 ;BL=0LD AX,#PA8255STB BL,AX ; 灭LEDLD AX,#PC8255STB LEDSEL,AX ; 送出LED 位选LD AX,#PA8255LDB BL,TABLETSP ; 取段码放入BLSTB BL,AX ; 送出段码LCALL DELAY ; 延时MAIN1:JE ADDB INCB T SP SJMP RET MAIN1 ; 是,转到MAIN LEDSEL,#B ; 否,位选左移一位 ; 取下一段码 LOOP ; 继续显示下一个LED;*延时子程序*DELAY: LD DT,#420 ; 循环次数=420DLOOP: NOP ;*420*=1ms

11、NOP ;DJNZ DT,DLOOP ;DT-1=0吗?否,继续循环RET ; 返回;*B to BCD转换子程序*BTOBCD: CLRBLDLDLDLD COUNT2 AX,#HSIRES EX,AX+ FX,AX AX,#BCD ; 清十进制结果位数记录变量 ; 低16位送到EX ; 高16位送到FXBLOOP: LD CX,FX ;FX 放入CXCLR DX ; 高16位扩展成32位DIVU CX,#10 ;DX,CX 组成的32位除以10LD FX,DX ; 余数存入FXDIVU EX,#10 ;FX,EX 组成的32位除以10STB FL,AX+ ; 余数存入BCD 存储区INCB

12、 C OUNT2 ; 记下十进制结果的位数LD FX,CX ; 高位商存入FXCMP EX,#0 ; 低位商为0吗?JNE BLOOP ; 否,跳转到BLOOPRET ; 返回;*BCD to 段码 子程序*BCDTOL: LD AX,#BCDLD EX,#TABLE;LD DX,#LEDLDB BL,CHANNALSTB BL,7EX ; 通道号存入TABLE 区的第八个单元,在第一个LED 显示LDB CL,COUNT2NEXT: LDB SP1,AX+ ; 取BCD 码放到SP1中LDB BH,LEDSP1 ; 查找BCD 码对应的段码放到BH 中STB BH,EX+ ; 段码存入TAB

13、LE 存放区DJNZ CL,NEXT ; 是否转换完?否,再转换。 LDB CL,#7SUBB CL,COUNT2 ; 是,7-COUNT2CLEAN: STB R0,EX+ ; 把0存入剩下的TABLE 单元 DJNZ CL,CLEANRET;*KEY3*KEY3:EI LDB ST ST LOOPK,#1 R0,HSIRES R0,HSIRESH ; 开中断 ; 开循环显示功能 ; 使显示为0RET ; 返回;*KEY6*KEY6: DI ; 关中断LDB CHANNAL,#0BEH ; 通道号=6LDB ADKEY ,#1 ; 开AD 转换开关LDB ADSEL,#B ; 选择ACH6通道LDB ADCOM,ADSEL ; 立即启动AD 转换 RET ; 返回;*KEY7*KEY

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论