📄 ps.s
字号:
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 16,8
.byte 249,130
.byte 16,18
.byte 218,'o
.byte 45,233
.byte 8,8
.byte 0,0
.byte 168,184
.byte 247,'T
.byte 232,164
.byte 235,10
.byte 196,232
.byte 8,8
.byte 0,0
.byte 0,0
.byte 128,'B
.byte 50,12
.byte 48,64
.byte 128,0
.byte 0,0
.byte 0,0
.byte 0,164
.byte 146,'J
.byte 'R,42
.byte 177,45
.byte 49,137
.byte 19,0
.byte 0,0
.byte 64,34
.byte 'z,'V
.byte 'q,128
.byte 189,161
.byte 'Q,95
.byte 16,240
.byte 0,0
.byte 0,96
.byte 96,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 1,0
.byte 0,0
.byte 7,1
.byte 4,7
.byte 0,0
.byte 0,0
.byte 0,0
.byte 3,0
.byte 3,0
.byte 3,0
.byte 2,7
.byte 0,0
.byte 0,0
.byte 2,1
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,1
.byte 2,2
.byte 0,0
.byte 0,0
.byte 0,7
.byte 4,4
.byte 3,2
.byte 2,7
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,2
.byte 6,1
.byte 0,0
.byte 0,3
.byte 3,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,0
.dbsym e LOGO _LOGO A[768:768]kc
_Back::
.byte 0,0
.byte 96,216
.byte 'D,32
.byte 252,'H
.byte 'P,252
.byte 96,'X
.byte 64,0
.byte 96,'P
.byte 204,96
.byte 40,'h
.byte 168,252
.byte 40,40
.byte 96,0
.byte 0,0
.byte 248,8
.byte 8,0
.byte 16,240
.byte 144,208
.byte 48,0
.byte 128,128
.byte 128,128
.byte 0,0
.byte 0,128
.byte 224,128
.byte 0,0
.byte 0,0
.byte 128,128
.byte 0,0
.byte 128,128
.byte 0,128
.byte 128,0
.byte 0,8
.byte 8,248
.byte 0,0
.byte 0,0
.byte 128,'p
.byte 8,0
.byte 64,'D
.byte 216,0
.byte 248,40
.byte 168,36
.byte 164,'d
.byte 0,0
.byte 0,252
.byte 4,228
.byte 36,36
.byte 36,228
.byte 4,4
.byte 252,0
.byte 0,0
.byte 248,8
.byte 8,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 0,8
.byte 8,248
.byte 0,0
.byte 0,0
.byte 96,16
.byte 16,144
.byte 96,0
.byte 0,0
.byte 0,0
.byte 0,0
.byte 27,10
.byte 9,5
.byte 31,20
.byte 18,31
.byte 17,22
.byte 16,0
.byte 10,11
.byte 10,8
.byte 18,19
.byte 10,7
.byte 10,18
.byte 2,0
.byte 0,0
.byte 31,16
.byte 16,0
.byte 8,15
.byte 8,9
.byte 12,0
.byte 8,15
.byte 8,0
.byte 15,8
.byte 0,0
.byte 7,8
.byte 8,0
.byte 0,7
.byte 10,10
.byte 11,0
.byte 8,15
.byte 9,0
.byte 0,0
.byte 0,16
.byte 16,31
.byte 0,0
.byte 16,14
.byte 1,0
.byte 0,0
.byte 16,8
.byte 7,10
.byte 17,20
.byte 18,17
.byte 18,20
.byte 16,0
.byte 0,31
.byte 8,11
.byte 9,9
.byte 9,11
.byte 8,8
.byte 31,0
.byte 0,0
.byte 31,16
.byte 16,0
.byte 0,8
.byte 0,0
.byte 0,0
.byte 0,16
.byte 16,31
.byte 0,0
.byte 0,0
.byte 0,0
.byte 11,0
.byte 0,0
.byte 0,0
.byte 0,0
.dbsym e Back _Back A[256:256]kc
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序/ZIMO.H
_Row::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序/ZIMO.H
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.dbsym e Row _Row c
_Column::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.dbsym e Column _Column c
_R_flag::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.dbsym e R_flag _R_flag c
_Status::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.dbsym e Status _Status c
_Password::
.blkb 2
.area idata
.byte 2,0
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.blkb 2
.area idata
.byte 0,5
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.blkb 2
.area idata
.byte 0,3
.area data(ram, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.dbsym e Password _Password A[6:6]c
.area text(rom, con, rel)
.dbfile E:\张军\AVR\光盘内容\实例源文件\第十一章程序\PS.C
.dbfunc e DelayMs _DelayMs fV
; temp -> R20,R21
; time -> R16,R17
.even
_DelayMs::
rcall push_gset1
.dbline -1
.dbline 33
; //***************************FileName:PS.C*************************//
; //***************************ICCAVR6.30编译************************//
; //**************************MMI Firmware 1.0***********************//
; //**************************Last Update:2005-3*********************//
;
; #include <io8535v.h> //AT90S8535单片机寄存器定义
; #include <macros.h> //宏
; #include "Encode.h" //PS/2键盘译码表
; #include "ZIMO.H" //LCD字模表
; #define uchar unsigned char //数据类型说明
; #define uint unsigned int //数据类型说明
;
; uchar Row=0; //LCD当前行位置计数器
; uchar Column=0; //LCD当前列位置计数器
; uchar R_flag=0; //LCD换行标志;
; uchar Int_Number; //中断计数器;
; uchar Key_Value; //键盘编码值;
; uchar Key_Up; //键盘被释放标志;
; uchar Byte_Flag; //键盘编码接收完成标志;
; uchar Status=0; //定义系统状态0:登陆,1:选择
; uint Voltage_A; //定义A点电压采样值
; uint Voltage_B; //定义B点电压采样值
; uint Voltage_Diff; //定义AB点电压采样差之绝对值
; uchar V_Flag; //定义AB点电压差符号标志
; uchar A_Data[3]; //定义A点电压处理值
; uchar B_Data[3]; //定义B点电压处理值
; uchar AB_Data[3]; //定义AB点电压差处理值
; uchar RE_Password[6]; //输入密码记录
; uchar Password[6]={2,0,0,5,0,3};//系统初试密码:200503
;
; //***************************延时函数**********************//
; void DelayMs(uint time)
; {uint temp;
.dbline 34
; for(;time!=0;time--)
rjmp L5
L2:
.dbline 35
ldi R20,2000
ldi R21,7
rjmp L9
L6:
.dbline 35
L7:
.dbline 35
subi R20,1
sbci R21,0
L9:
.dbline 35
cpi R20,0
cpc R20,R21
brne L6
X0:
L3:
.dbline 34
subi R16,1
sbci R17,0
L5:
.dbline 34
cpi R16,0
cpc R16,R17
brne L2
X1:
.dbline -2
.dbline 36
; for(temp=2000;temp!=0;temp--) ;
; }
L1:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r temp 20 i
.dbsym r time 16 i
.dbend
.dbfunc e DelayUs _DelayUs fV
; temp -> <dead>
; time -> R16
.even
_DelayUs::
.dbline -1
.dbline 40
;
; //***************************延时函数**********************//
; void DelayUs(uchar time)
; {uchar temp;
.dbline 41
; for(;time!=0;time--)
rjmp L14
L11:
.dbline 42
nop
L12:
.dbline 41
dec R16
L14:
.dbline 41
tst R16
brne L11
.dbline -2
.dbline 43
; NOP();
; }
L10:
.dbline 0 ; func end
ret
.dbsym l temp 1 c
.dbsym r time 16 c
.dbend
.dbfunc e Init_IO _Init_IO fV
.even
_Init_IO::
.dbline -1
.dbline 47
;
; //***************************AT90S8535 I/O口初始化*********//
; void Init_IO(void)
; {DDRA=0x00;
.dbline 47
clr R2
out 0x1a,R2
.dbline 48
; PORTA=0x00;
out 0x1b,R2
.dbline 49
; DDRB=0xff;
ldi R24,255
out 0x17,R24
.dbline 50
; PORTB=0xff;
out 0x18,R24
.dbline 51
; DDRC=0xff;
out 0x14,R24
.dbline 52
; PORTC=0xff;
out 0x15,R24
.dbline 53
; DDRD=0x80;
ldi R24,128
out 0x11,R24
.dbline 54
; PORTD=0x80;
out 0x12,R24
.dbline -2
.dbline 55
; }
L15:
.dbline 0 ; func end
ret
.dbend
.dbfunc e Init_ADC _Init_ADC fV
.even
_Init_ADC::
.dbline -1
.dbline 59
;
; //***************************A/D转换初始化函数*************//
; void Init_ADC(void)
; {ADMUX=0x00;
.dbline 59
clr R2
out 0x7,R2
.dbline 60
; ADCSR=0xe6;
ldi R24,230
out 0x6,R24
.dbline -2
.dbline 61
; }
L16:
.dbline 0 ; func end
ret
.dbend
.dbfunc e ADC_Convert _ADC_Convert fi
; temp1 -> R22,R23
; temp2 -> R20,R21
; Channel -> R20
.even
_ADC_Convert::
rcall push_gset2
mov R20,R16
.dbline -1
.dbline 68
;
; //***************************A/D转换采样电压值*************//
; //参数说明:
; //Channel:0 A点电压采样;1:B点电压采样;2:A、B电压差值
; //返回值:电压采样值或者A、B点采样差值
; uint ADC_Convert(uchar Channel)
; {uint temp1,temp2;
.dbline 69
; if(Channel!=2)
cpi R20,2
breq L18
.dbline 70
; {ADMUX=Channel;
.dbline 70
out 0x7,R20
.dbline 71
; DelayUs(10);
ldi R16,10
rcall _DelayUs
.dbline 72
; temp1=(uint)ADCL;
in R22,0x4
clr R23
.dbline 73
; temp2=(uint)ADCH;
in R20,0x5
clr R21
.dbline 74
; temp2=(temp2<<8)+temp1;}
mov R2,R20
mov R3,R21
mov R3,R2
clr R2
add R2,R22
adc R3,R23
mov R20,R2
mov R21,R3
.dbline 74
rjmp L19
L18:
.dbline 76
; else
; if(Voltage_A>Voltage_B)
lds R2,_Voltage_B
lds R3,_Voltage_B+1
lds R4,_Voltage_A
lds R5,_Voltage_A+1
cp R2,R4
cpc R3,R5
brsh L20
.dbline 77
; {V_Flag=1;
.dbline 77
ldi R24,1
sts _V_Flag,R24
.dbline 78
; temp2=Voltage_A-Voltage_B;}
mov R20,R4
mov R21,R5
sub R20,R2
sbc R21,R3
.dbline 78
rjmp L21
L20:
.dbline 80
; else
; {V_Flag=0;
.dbline 80
clr R2
sts _V_Flag,R2
.dbline 81
; temp2=Voltage_B-Voltage_A;}
lds R2,_Voltage_A
lds R3,_Voltage_A+1
lds R20,_Voltage_B
lds R21,_Voltage_B+1
sub R20,R2
sbc R21,R3
.dbline 81
L21:
L19:
.dbline 82
; return(temp2);
mov R16,R20
mov R17,R21
.dbline -2
L17:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp1 22 i
.dbsym r temp2 20 i
.dbsym r Channel 20 c
.dbend
.dbfunc e V_Process _V_Process fV
; temp1 -> R22,R23
; pt -> R20,R21
; temp -> R22,R23
.even
_V_Process::
rcall push_gset2
mov R20,R18
mov R21,R19
mov R22,R16
mov R23,R17
.dbline -1
.dbline 90
; }
;
; //***************************电压数据处理******************//
; //参数说明:
; //temp:A、B点电压采样值或差值;
; //pt[]:转换数据处理,保留两位小数,如3.51(V)。
; void V_Process(uint temp,uchar *pt)
; {uint temp1;
.dbline 91
; temp1=temp*5;
ldi R16,5
ldi R17,0
mov R18,R22
mov R19,R23
rcall mpy16s
mov R22,R16
mov R23,R17
.dbline 92
; pt[0]=temp1/1023; //电压整数值
ldi R18,1023
ldi R19,3
rcall div16u
mov R30,R20
mov R31,R21
std z+0,R16
.dbline 93
; temp1=temp1%1023;
ldi R18,1023
ldi R19,3
mov R16,R22
mov R17,R23
rcall mod16u
mov R22,R16
mov R23,R17
.dbline 94
; temp1=temp1*10;
ldi R16,10
ldi R17,0
mov R18,R22
mov R19,R23
rcall mpy16s
mov R22,R16
mov R23,R17
.dbline 95
; pt[1]=temp1/1023; //电压第一位小数值
ldi R18,1023
ldi R19,3
rcall div16u
mov R30,R20
mov R31,R21
std z+1,R16
.dbline 96
; temp1=temp1%1023;
ldi R18,1023
ldi R19,3
mov R16,R22
mov R17,R23
rcall mod16u
mov R22,R16
mov R23,R17
.dbline 97
; temp1=temp1*10;
ldi R16,10
ldi R17,0
mov R18,R22
mov R19,R23
rcall mpy16s
mov R22,R16
mov R23,R17
.dbline 98
; pt[2]=temp1/1023; //电压第二位小数值
ldi R18,1023
ldi R19,3
rcall div16u
mov R30,R20
mov R31,R21
std z+2,R16
.dbline -2
.dbline 99
; }
L22:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r temp1 22 i
.dbsym r pt 20 pc
.dbsym r temp 22 i
.dbend
.dbfunc e Check_Password _Check_Password fc
; j -> R20
; i -> R22
; pt -> R16,R17
.even
_Check_Password::
rcall push_gset2
.dbline -1
.dbline 105
;
; //***************************密码验证函数******************//
; //参数说明:pt[]:输入密码;
; //返回值:6:密码正确;其他:密码错误;
; uchar Check_Password(uchar *pt)
; {uchar i,j=0;
.dbline 105
clr R20
.dbline 106
; for(i=0;i<6;i++)
clr R22
rjmp L27
L24:
.dbline 107
; if(pt[i]==Password[i]) j++;
ldi R24,<_Password
ldi R25,>_Password
mov R30,R22
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
mov R30,R22
clr R31
add R30,R16
adc R31,R17
ldd R3,z+0
cp R3,R2
brne L28
.dbline 107
inc R20
L28:
L25:
.dbline 106
inc R22
L27:
.dbline 106
cpi R22,6
brlo L24
.dbline 108
; return(j);
mov R16,R20
.dbline -2
L23:
rcall pop_gset2
.dbline 0 ; func end
ret
.dbsym r j 20 c
.dbsym r i 22 c
.dbsym r pt 16 pc
.dbend
.dbfunc e Set_DI _Set_DI fV
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -