网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
10月23日漏签0天
汇编吧 关注:45,334贴子:164,475
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回汇编吧
>0< 加载中...

求助大神 请教

  • 取消只看楼主
  • 收藏

  • 回复
  • xiao木毅
  • 加载执行
    2
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
ReadAD proc near
mov dx, ADPort
mov al, 0
out dx, al
mov al, 60
rr:dec al ; delay
这个延时程序为什么 设置是60 这个值是在控制什么?
是一个电位器控制的   通过 模数转换的  温度采样报警器
整个程序是
mode equ 082h ; 方式0,PA,PC输出,PB输入
PortA equ 8000h ; Port A
PortB equ 8001h ; Port B
PortC equ 8002h ; Port C
CAddr equ 8003h ; 控制字地址
ADPort equ 0a000h ; AD采样输入片选
CS273 equ 0a000h ; 控制输出片选
UP equ 16h ; Next
DOWN equ 15h ; Last
LowLimit equ 10
HighLimit equ 30
LowTemp equ -45 ; A/D 0
HighTemp equ 55 ; A/D 255
Heat equ 1 ; 加热控制
Cool equ 2 ; 致冷控制
OUTBIT equ 09002h ; 位控制口
OUTSEG equ 09004h ; 段控制口
IN_KEY equ 09001h ; 键盘读入口
data segment
LEDBuf db 6 dup(?) ; 显示缓冲
Num db 1 dup(?) ; 显示的数据
DelayT db 1 dup(?)
CurTemp db 1 dup(?)
SetTemp db 1 dup(?)
PortABuf db 1 dup(?)
LEDMAP: ; 八段管显示码
db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h
db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h
KeyTable: ; 键码定义
db 16h, 15h, 14h, 0ffh
db 13h, 12h, 11h, 10h
db 0dh, 0ch, 0bh, 0ah
db 0eh, 03h, 06h, 09h
db 0fh, 02h, 05h, 08h
db 00h, 01h, 04h, 07h
data ends
code segment
assume cs:code, ds:data
Delay proc near
push ax ; 延时子程序
push cx
mov al, 0
mov cx,ax
loop $
pop cx
pop ax
ret
Delay endp
DisplayLED proc near
mov bx, offset LEDBuf
mov cl, 6 ; 共6个八段管
mov ah, 00100000b ; 从左边开始显示
DLoop:
mov dx, OUTBIT
mov al, 0
out dx,al ; 关所有八段管
mov al, [bx]
mov dx, OUTSEG
out dx,al
mov dx, OUTBIT
mov al, ah
out dx, al ; 显示一位八段管
push ax
mov ah, 1
call Delay
pop ax
shr ah, 1
inc bx
dec cl
jnz DLoop
mov dx, OUTBIT
mov al, 0
out dx,al ; 关所有八段管
ret
DisplayLED endp
TestKey proc near
mov dx, OUTBIT
mov al, 0
out dx, al ; 输出线置为0
mov dx, IN_KEY
in al, dx ; 读入键状态
not al
and al, 0fh ; 高四位不用
ret
TestKey endp
GetKey proc near
mov ch, 00100000b
mov cl, 6
KLoop:
mov dx, OUTBIT
mov al, ch ; 找出键所在列
not al
out dx, al
shr ch, 1
mov dx, IN_KEY
in al, dx
not al
and al, 0fh
jne Goon_ ; 该列有键入
dec cl
jnz KLoop
mov cl, 0ffh ; 没有键按下, 返回 0ffh
jmp Exit1
Goon_:dec cl
shl cl, 2 ; 键值 = 列 X 4 + 行
mov ch, 4
LoopC:
test al, 1
jnz Exit1
shr al, 1
inc cl
dec ch
jnz LoopC
Exit1:
mov dx, OUTBIT
mov al, 0
out dx, al
mov ch, 0
mov bx, offset KeyTable
add bx, cx
mov al, [bx] ; 取出键码
mov bl, al
WaitRelease:
mov dx, OUTBIT
mov al, 0
out dx, al ; 等键释放
mov ah, 10
call Delay
call TestKey
jne WaitRelease
mov al, bl
ret
GetKey endp
; ===================================
DisplayResult proc near
mov al, CurTemp
test al, 80h
jz GE0
mov LEDBuf, 40h ; '-'
dec al
not al
jmp Goon
GE0:
mov LEDBuf, 0 ; ' '
Goon:mov cl, 10
mov ah, 0
div cl
mov bl, al
mov bh, 0
add bx, offset LEDMAP
mov al, [bx]
mov LEDBuf+1, al
mov bl, ah
mov bh, 0
add bx, offset LEDMAP
mov al, [bx]
mov LEDBuf+2, al
mov LEDBuf+3, 0 ; ' '
mov al, SetTemp
mov ah, 0
mov cl, 10
div cl
mov bl, al
mov bh, 0
add bx, offset LEDMAP
mov al, [bx]
mov LEDBuf+4, al
mov bl, ah
mov bh, 0
add bx, offset LEDMAP
mov al, [bx]
mov LEDBuf+5, al
ret
DisplayResult endp
ReadAD proc near
mov dx, ADPort
mov al, 0
out dx, al
mov al, 60
rr:dec al ; delay
jnz rr
mov dx, ADPort
in al, dx
ret
ReadAD endp
ReadTemp proc near
mov bx, 0
mov cl, 16
RLoop:
call ReadAD
mov ah, 0
add bx, ax
dec cl
jnz RLoop
shr bx, 4
mov ax, bx
mov cl, HighTemp - LowTemp
mul cl
mov al, ah ; /256
add al, LowTemp
mov CurTemp, al
ret
ReadTemp endp
Start proc near
mov ax, data
mov ds, ax
mov al, mode
mov dx, CAddr
out dx, al ; 输出控制字
mov SetTemp, 20
MLoop:
call TestKey
jne KeyPressed
call DisplayResult
call DisplayLED
call ReadTemp
mov al, SetTemp
dec al
dec al
cmp CurTemp, al
jge GN2
or PortABuf, Heat
and PortABuf, not Cool
jmp GN4
GN2:
mov al,SetTemp
inc al
inc al
cmp CurTemp, al
jle GN3
or PortABuf, Cool
and PortABuf, not Heat
jmp GN4
GN3:
and PortABuf, not (Cool+Heat)
GN4:
mov dx, PortA
mov al, PortABuf
out dx, al
jmp MLoop
KeyPressed:
call GetKey
cmp al, DOWN
jne Key0
cmp SetTemp,LowLimit
je Key1
dec SetTemp
jmp Key1
Key0:
cmp al,UP
jne Key1
cmp SetTemp,HighLimit
je Key1
inc SetTemp
Key1:
jmp MLoop
start endp
code ends
end start


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回汇编吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示