可编程频率计-硬件课程设计-总结报告(5)

2019-04-05 14:27

Clock0 Clock1

equ 210h ;定时器0的地址 equ 211h ;定时器1的地址

Clock2 equ 212h ;定时器2的地址 clockc

equ 213h ;计数器控制端口地址

Clock0Mode equ 00110000b ;通道0,先读写低位再读写高位,方式0,2进制 Clock1Mode equ 01110100b ;通道1,先读写低位再读写高位,方式2,2进制 Clock2Mode equ 10110100b ;通道2,先读写低位再读写高位,方式2,2进制 Clock1Read equ 01000100b ;通道1计数器锁存,供CPU读

Clock0Count equ 0f424h ;计数器0计数值62500,在1M/8Hz下0.5秒所需计数值) Clock1Count equ 0 ;计数器1计数值 Clock2Count equ 16 ;计数器2计数值 InputAdr equ 218h ;IO输入端口地址

StartWork equ 01h ;开始工作的检测状态(通过与运算截获第一位) Clock0End equ 02h ;检测计数器0是否工作结束(通过与运算截获第二位) Data_K equ 10 ;变量K,初始值10

CODE SEGMENT ;主函数

MAIN PROC FAR

ASSUME CS:CODE DS:CODE START: push cs pop ds

call Is_Start ;检测是否按下开始脉冲键

call InitClock2 ;初始化计数器2,并产生可编程的方波频率 call InitClock0 ;初始化计数器0 call InitClock1 ;初始化计数器1

21

call CheckClock0Over ;检测计数器0是否工作结束,并将读取的结果存入变量a中 call Display ;显示变量a的值到LED上 EndTime:

mov dx,InputAdr ;IO输入端口地址

in al,dx

and al,StartWork ;开始工作的检测状态(通过与运算截获第一位) cmp al,01h ;判断是否为高电平 jz START

jmp EndTime MAIN ENDP

;这个函数负责将提取出的变量a的值输出到LED上,最大16位 Display proc near

;初始化8279

mov di,ax ;保存频率至BX

mov al,LEDMOD ;左边输入,八位显示,外部译码八位显示 mov dx,Z8279 out dx,al

mov al,LEDFEQ ;扫描频率 out dx,al

;向LED输出数据,显示结果 mov cx,5 First1:

mov ax,di ;保存频率至AX mov dx,00h mov si,Data_K

div si

mov di,ax ;将商保存至BX mov ax,dx ;将余数保存至AX

22

lea bx,LED add ax,bx mov bx,ax mov ax,[bx]

OutPut1: mov dx,D8279 ;8279数据端口

out dx,al

dec cx cmp cx,3 ja Continu1 lea bx,Signed mov ax,[bx] cmp ax,0 ja Next1 jmp Next2 Continu1:

jmp First1

Next1: mov dx,D8279 mov al,00h

out dx,al out dx,al lea bx,Signed

mov ax,00h

mov [bx],ax Next2: cmp cx,0 ja Continu1

jmp Next3

Next3:

;空操作 ;空操作 23

mov dx,D8279 mov al,00h

out dx,al ;空操作 lea bx,Signed

mov ax,[bx] inc ax mov [bx],ax ret Display endp

;检查是否按下开始按钮,判断脉冲信号 Is_Start proc near Again:

mov dx,InputAdr ;IO输入端口地址

in al,dx

and al,StartWork ;开始工作的检测状态(通过与运算截获第一位) cmp al,00h ;判断是否为低电平 jz EndCheck jmp Again

EndCheck: ;判断结束,可以工作了 ret Is_Start endp

;设置计数器0的工作方式及计数值 InitClock0 proc near 次

mov dx,clockc ;计数器控制端地址

mov al,Clock0Mode ;通道0,先读写低位再读写高位,方式0,2进制,只定时1

out dx,al

mov dx,Clock0 ;定时器0的地址

24

mov ax,Clock0Count ;计数器0计数值62500,在1M/8Hz下0.5秒所需计数值) out dx,al mov al,ah out dx,al ret

InitClock0 endp

;设置计数器1的工作方式及计数值 InitClock1 proc near

mov dx,clockc ;计数器控制端地址

mov al,Clock1Mode ;通道1,先读写低位再读写高位,方式2,2进制 out dx,al

mov dx,Clock1 ;定时器1的地址

mov ax,Clock1Count ;计数器1计数值0 out dx,al mov al,ah out dx,al ret

InitClock1 endp

;设置计数器2的工作方式及计数值,工作频率1MHZ InitClock2 proc near

mov dx,InputAdr ;IO输入端口地址 in al,dx mov cl,2 not al

and al,11111100b

shr al,cl ;右移两位 mov ah,00h

mov cx,ax ;保存频率倍数

25


可编程频率计-硬件课程设计-总结报告(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:《中国工商银行综合业务会计核算管理制度——业务操作篇(试行稿)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: