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

📄 frequence.s

📁 使用Mega16编制的频率检测程序
💻 S
📖 第 1 页 / 共 2 页
字号:
	.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 + -