📄 frequence.s
字号:
.module Frequence.c
.area data(ram, con, rel)
_frequence::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\单片机编程\iccavr\频率检测\Frequence.c
.dbsym e frequence _frequence c
_save::
.blkb 1
.area idata
.byte 0
.area data(ram, con, rel)
.dbfile D:\单片机编程\iccavr\频率检测\Frequence.c
.dbsym e save _save c
.area text(rom, con, rel)
.dbfile D:\单片机编程\iccavr\频率检测\Frequence.c
.dbfunc e SetB _SetB fV
; k -> R20
.even
_SetB::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 63
; //ICC-AVR application builder : 2007-11-21 10:43:58
; // Target : M16
; // Crystal: 1.0000Mhz
;
; #include <iom16v.h>
; #include <macros.h>
;
; #define OUTPT PORTA //根据连接的端口,设置PORTA
; #define OUTDR DDRA //根据连接的端口,设置DDRA
;
; #define CS 0
; #define CLK 1
; #define DIO 2
; #define KEY 3
;
; #define Delay 2
; #define LongDelay 10
; //用于延时周期数
;
; //Pure Command 纯指令,不带返回值
; #define Reset 0xA4
; #define Test 0xBF
; #define LeftShift 0xA1
; #define RightShift 0xA0
; #define LeftCycle 0xA3
; #define RightCycle 0xA2
;
; //Command with parameter 带参数的指令
; #define DispMethod0 0x80
; #define DispMethod0Data 0x00
; //上面为使用方式0显示数据,
; //DispMethod0数值为 10000 a2 a1 a0,其中a2 a1 a0为显示位0-7地址
; //DispMethod0Data为DP X X X d3 d2 d1 d0 ,其中DP为小数点
; //d3 d2 d1 d0 为 0~9 - E H L P (空)的顺序编码
;
; #define DispMethod1 0xC8
; #define DispMethod1Data 0x00
; //上面为使用方式1显示数据,
; //DispMethod1数值为 11001 a2 a1 a0,其中a2 a1 a0为显示位0-7地址
; //DispMethod1Data为DP X X X d3 d2 d1 d0 ,其中DP为小数点
; //d3 d2 d1 d0 为 0~9 A~F 的顺序编码
;
; #define BlinkControl 0x88
; #define BlinkBit 0x00
; //BlinkBit为d8 d7 d6 d5 d4 d3 d2 d1对应位 其中 0代表闪烁 1不闪烁
;
; #define DisappearControl 0x98
; #define DisappearBit 0x00
; //DisappearBit为d8 d7 d6 d5 d4 d3 d2 d1对应位 其中1代表显示 0消隐
; //消隐不能把所有的位都消隐
;
; #define ReadKeyboard 0x15
; #define ReadASCII
; //ReadASCII为读出的键盘值,从0~3FH 没有键盘按下时为0xFF
; //当ZLG7289A 检测到有效的按键时,KEY 引脚从高电平变为低电平并一直保持
; //到按键结束。在此期间如果ZLG7289A 接收到“读键盘数据指令”则输出当前
; //按键的键盘代码,没有有效按键输出FFH (11111111B)
;
; unsigned char frequence=0;//用于记录频率
; unsigned char save=0;//用于存数
;
; void SetB(unsigned char k)
; {//这里的PORTB根据自己的程序修改
.dbline 64
; OUTPT|=(1<<k);
ldi R16,1
mov R17,R20
xcall lsl8
in R2,0x1b
or R2,R16
out 0x1b,R2
.dbline -2
L1:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r k 20 c
.dbend
.dbfunc e ClrB _ClrB fV
; l -> R20
.even
_ClrB::
xcall push_gset1
mov R20,R16
.dbline -1
.dbline 68
; }
;
; void ClrB(unsigned char l)
; {//这里的PORTB根据自己的程序修改
.dbline 69
; OUTPT&=~(1<<l);
ldi R16,1
mov R17,R20
xcall lsl8
mov R2,R16
com R2
in R3,0x1b
and R3,R2
out 0x1b,R3
.dbline -2
L2:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r l 20 c
.dbend
.dbfunc e WriteOne7289 _WriteOne7289 fV
; i -> R20
; j -> R22
; Cmd -> R10
.even
_WriteOne7289::
xcall push_gset3
mov R10,R16
.dbline -1
.dbline 73
; }
;
; void WriteOne7289(unsigned char Cmd)
; {//写入一个字节,可以是单字节命令
.dbline 74
; unsigned char i=0;//用于移了几位
clr R20
.dbline 75
; unsigned char j=0;//用于延时
clr R22
.dbline 77
;
; SetB(CS);
clr R16
xcall _SetB
.dbline 78
; j=Delay;
ldi R22,2
L4:
.dbline 79
L5:
.dbline 79
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L4
.dbline 81
;
; ClrB(CLK);
ldi R16,1
xcall _ClrB
.dbline 82
; j=Delay;
ldi R22,2
L7:
.dbline 83
L8:
.dbline 83
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L7
.dbline 84
; OUTDR|=0x0f;
in R24,0x1a
ori R24,15
out 0x1a,R24
.dbline 86
;
; ClrB(CS);
clr R16
xcall _ClrB
.dbline 87
; j=LongDelay;
ldi R22,10
L10:
.dbline 88
L11:
.dbline 88
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L10
.dbline 89
; for(i=0;i<8;i++)
clr R20
xjmp L16
L13:
.dbline 90
; {
.dbline 91
; if(0x80&Cmd)
sbrs R10,7
rjmp L17
.dbline 92
; {
.dbline 93
; SetB(DIO);
ldi R16,2
xcall _SetB
.dbline 94
; j=Delay;
ldi R22,2
L19:
.dbline 95
L20:
.dbline 95
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L19
.dbline 97
;
; SetB(CLK);
ldi R16,1
xcall _SetB
.dbline 98
; j=Delay;
ldi R22,2
L22:
.dbline 99
L23:
.dbline 99
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L22
.dbline 101
;
; ClrB(CLK);
ldi R16,1
xcall _ClrB
.dbline 102
; j=Delay;
ldi R22,2
L25:
.dbline 103
L26:
.dbline 103
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L25
.dbline 104
; }
xjmp L18
L17:
.dbline 106
; else
; {
.dbline 107
; ClrB(DIO);
ldi R16,2
xcall _ClrB
.dbline 108
; j=Delay;
ldi R22,2
L28:
.dbline 109
L29:
.dbline 109
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L28
.dbline 111
;
; SetB(CLK);
ldi R16,1
xcall _SetB
.dbline 112
; j=Delay;
ldi R22,2
L31:
.dbline 113
L32:
.dbline 113
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L31
.dbline 115
;
; ClrB(CLK);
ldi R16,1
xcall _ClrB
.dbline 116
; j=Delay;
ldi R22,2
L34:
.dbline 117
L35:
.dbline 117
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L34
.dbline 118
; }
L18:
.dbline 119
lsl R10
.dbline 120
L14:
.dbline 89
inc R20
L16:
.dbline 89
cpi R20,8
brlo L13
.dbline 121
; Cmd<<=1;
; }
; SetB(CS);
clr R16
xcall _SetB
.dbline -2
L3:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbsym r j 22 c
.dbsym r Cmd 10 c
.dbend
.dbfunc e WriteTwo7289 _WriteTwo7289 fV
; i -> R20
; j -> R22
; Data -> R10
; Cmd -> R12
.even
_WriteTwo7289::
xcall push_gset4
mov R10,R18
mov R12,R16
.dbline -1
.dbline 125
; }
;
; void WriteTwo7289(unsigned char Cmd,unsigned char Data)
; {//写入一个带参数的命令
.dbline 126
; unsigned char i=0;//用于移了几位
clr R20
.dbline 127
; unsigned char j=0;//用于延时
clr R22
.dbline 129
;
; SetB(CS);
clr R16
xcall _SetB
.dbline 130
; j=Delay;
ldi R22,2
L38:
.dbline 131
L39:
.dbline 131
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L38
.dbline 133
;
; ClrB(CLK);
ldi R16,1
xcall _ClrB
.dbline 134
; j=Delay;
ldi R22,2
L41:
.dbline 135
L42:
.dbline 135
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L41
.dbline 136
; OUTDR|=0x0f;
in R24,0x1a
ori R24,15
out 0x1a,R24
.dbline 138
;
; ClrB(CS);
clr R16
xcall _ClrB
.dbline 139
; j=LongDelay;
ldi R22,10
L44:
.dbline 140
L45:
.dbline 140
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L44
.dbline 141
; for(i=0;i<8;i++)
clr R20
xjmp L50
L47:
.dbline 142
; {//发送命令
.dbline 143
; if(0x80&Cmd)
sbrs R12,7
rjmp L51
.dbline 144
; {
.dbline 145
; SetB(DIO);
ldi R16,2
xcall _SetB
.dbline 146
; j=Delay;
ldi R22,2
L53:
.dbline 147
L54:
.dbline 147
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L53
.dbline 149
;
; SetB(CLK);
ldi R16,1
xcall _SetB
.dbline 150
; j=Delay;
ldi R22,2
L56:
.dbline 151
L57:
.dbline 151
; while(j--);
mov R2,R22
clr R3
subi R22,1
tst R2
brne L56
.dbline 153
;
; ClrB(CLK);
ldi R16,1
xcall _ClrB
.dbline 154
; j=Delay;
ldi R22,2
L59:
.dbline 155
L60:
.dbline 155
; while(j--);
mov R2,R22
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -