⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ps.s

📁 AVRkaifashili.rar
💻 S
📖 第 1 页 / 共 4 页
字号:
	.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 + -