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

📄 frequence.lis

📁 使用Mega16编制的频率检测程序
💻 LIS
📖 第 1 页 / 共 3 页
字号:
                        .module Frequence.c
                        .area data(ram, con, rel)
 0000           _frequence::
 0000                   .blkb 1
                        .area idata
 0000 00                .byte 0
                        .area data(ram, con, rel)
 0001                   .dbfile D:\单片机编程\iccavr\频率检测\Frequence.c
 0001                   .dbsym e frequence _frequence c
 0001           _save::
 0001                   .blkb 1
                        .area idata
 0001 00                .byte 0
                        .area data(ram, con, rel)
 0002                   .dbfile D:\单片机编程\iccavr\频率检测\Frequence.c
 0002                   .dbsym e save _save c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\单片机编程\iccavr\频率检测\Frequence.c
 0000                   .dbfunc e SetB _SetB fV
 0000           ;              k -> R20
                        .even
 0000           _SetB::
 0000 0E940000          xcall push_gset1
 0004 402F              mov R20,R16
 0006                   .dbline -1
 0006                   .dbline 63
 0006           ; //ICC-AVR application builder : 2007-11-21 10:43:58
 0006           ; // Target : M16
 0006           ; // Crystal: 1.0000Mhz
 0006           ; 
 0006           ; #include <iom16v.h>
 0006           ; #include <macros.h>
 0006           ; 
 0006           ; #define OUTPT PORTA //根据连接的端口,设置PORTA
 0006           ; #define OUTDR DDRA //根据连接的端口,设置DDRA
 0006           ; 
 0006           ; #define CS 0 
 0006           ; #define CLK 1 
 0006           ; #define DIO 2 
 0006           ; #define KEY 3 
 0006           ; 
 0006           ; #define Delay 2
 0006           ; #define LongDelay 10
 0006           ; //用于延时周期数
 0006           ; 
 0006           ; //Pure Command 纯指令,不带返回值
 0006           ; #define Reset 0xA4
 0006           ; #define Test 0xBF
 0006           ; #define LeftShift 0xA1
 0006           ; #define RightShift 0xA0
 0006           ; #define LeftCycle 0xA3
 0006           ; #define RightCycle 0xA2
 0006           ; 
 0006           ; //Command with parameter 带参数的指令
 0006           ; #define DispMethod0 0x80
 0006           ; #define DispMethod0Data 0x00
 0006           ; //上面为使用方式0显示数据,
 0006           ; //DispMethod0数值为 10000 a2 a1 a0,其中a2 a1 a0为显示位0-7地址
 0006           ; //DispMethod0Data为DP X X X d3 d2 d1 d0 ,其中DP为小数点
 0006           ; //d3 d2 d1 d0 为 0~9 - E H L P (空)的顺序编码
 0006           ; 
 0006           ; #define DispMethod1 0xC8
 0006           ; #define DispMethod1Data 0x00
 0006           ; //上面为使用方式1显示数据,
 0006           ; //DispMethod1数值为 11001 a2 a1 a0,其中a2 a1 a0为显示位0-7地址
 0006           ; //DispMethod1Data为DP X X X d3 d2 d1 d0 ,其中DP为小数点
 0006           ; //d3 d2 d1 d0 为 0~9 A~F 的顺序编码
 0006           ; 
 0006           ; #define BlinkControl 0x88
 0006           ; #define BlinkBit 0x00
 0006           ; //BlinkBit为d8 d7 d6 d5 d4 d3 d2 d1对应位 其中 0代表闪烁 1不闪烁
 0006           ; 
 0006           ; #define DisappearControl 0x98
 0006           ; #define DisappearBit 0x00
 0006           ; //DisappearBit为d8 d7 d6 d5 d4 d3 d2 d1对应位 其中1代表显示 0消隐
 0006           ; //消隐不能把所有的位都消隐
 0006           ; 
 0006           ; #define ReadKeyboard 0x15
 0006           ; #define ReadASCII
 0006           ; //ReadASCII为读出的键盘值,从0~3FH 没有键盘按下时为0xFF
 0006           ; //当ZLG7289A 检测到有效的按键时,KEY 引脚从高电平变为低电平并一直保持
 0006           ; //到按键结束。在此期间如果ZLG7289A 接收到“读键盘数据指令”则输出当前
 0006           ; //按键的键盘代码,没有有效按键输出FFH (11111111B)
 0006           ; 
 0006           ; unsigned char frequence=0;//用于记录频率
 0006           ; unsigned char save=0;//用于存数
 0006           ; 
 0006           ; void SetB(unsigned char k)
 0006           ; {//这里的PORTB根据自己的程序修改
 0006                   .dbline 64
 0006           ;     OUTPT|=(1<<k);
 0006 01E0              ldi R16,1
 0008 142F              mov R17,R20
 000A 0E940000          xcall lsl8
 000E 2BB2              in R2,0x1b
 0010 202A              or R2,R16
 0012 2BBA              out 0x1b,R2
 0014                   .dbline -2
 0014           L1:
 0014 0E940000          xcall pop_gset1
 0018                   .dbline 0 ; func end
 0018 0895              ret
 001A                   .dbsym r k 20 c
 001A                   .dbend
 001A                   .dbfunc e ClrB _ClrB fV
 001A           ;              l -> R20
                        .even
 001A           _ClrB::
 001A 0E940000          xcall push_gset1
 001E 402F              mov R20,R16
 0020                   .dbline -1
 0020                   .dbline 68
 0020           ; }
 0020           ; 
 0020           ; void ClrB(unsigned char l)
 0020           ; {//这里的PORTB根据自己的程序修改
 0020                   .dbline 69
 0020           ;     OUTPT&=~(1<<l);
 0020 01E0              ldi R16,1
 0022 142F              mov R17,R20
 0024 0E940000          xcall lsl8
 0028 202E              mov R2,R16
 002A 2094              com R2
 002C 3BB2              in R3,0x1b
 002E 3220              and R3,R2
 0030 3BBA              out 0x1b,R3
 0032                   .dbline -2
 0032           L2:
 0032 0E940000          xcall pop_gset1
 0036                   .dbline 0 ; func end
 0036 0895              ret
 0038                   .dbsym r l 20 c
 0038                   .dbend
 0038                   .dbfunc e WriteOne7289 _WriteOne7289 fV
 0038           ;              i -> R20
 0038           ;              j -> R22
 0038           ;            Cmd -> R10
                        .even
 0038           _WriteOne7289::
 0038 0E940000          xcall push_gset3
 003C A02E              mov R10,R16
 003E                   .dbline -1
 003E                   .dbline 73
 003E           ; }
 003E           ; 
 003E           ; void WriteOne7289(unsigned char Cmd)
 003E           ; {//写入一个字节,可以是单字节命令
 003E                   .dbline 74
 003E           ;     unsigned char i=0;//用于移了几位
 003E 4427              clr R20
 0040                   .dbline 75
 0040           ;     unsigned char j=0;//用于延时
 0040 6627              clr R22
 0042                   .dbline 77
 0042           ;     
 0042           ;     SetB(CS);
 0042 0027              clr R16
 0044 DDDF              xcall _SetB
 0046                   .dbline 78
 0046           ;     j=Delay;
 0046 62E0              ldi R22,2
 0048           L4:
 0048                   .dbline 79
 0048           L5:
 0048                   .dbline 79
 0048           ;     while(j--);
 0048 262E              mov R2,R22
 004A 3324              clr R3
 004C 6150              subi R22,1
 004E 2220              tst R2
 0050 D9F7              brne L4
 0052                   .dbline 81
 0052           ;     
 0052           ;     ClrB(CLK);
 0052 01E0              ldi R16,1
 0054 E2DF              xcall _ClrB
 0056                   .dbline 82
 0056           ;     j=Delay;
 0056 62E0              ldi R22,2
 0058           L7:
 0058                   .dbline 83
 0058           L8:
 0058                   .dbline 83
 0058           ;     while(j--);
 0058 262E              mov R2,R22
 005A 3324              clr R3
 005C 6150              subi R22,1
 005E 2220              tst R2
 0060 D9F7              brne L7
 0062                   .dbline 84
 0062           ;     OUTDR|=0x0f;
 0062 8AB3              in R24,0x1a
 0064 8F60              ori R24,15
 0066 8ABB              out 0x1a,R24
 0068                   .dbline 86
 0068           ;     
 0068           ;     ClrB(CS);
 0068 0027              clr R16
 006A D7DF              xcall _ClrB
 006C                   .dbline 87
 006C           ;     j=LongDelay;
 006C 6AE0              ldi R22,10
 006E           L10:
 006E                   .dbline 88
 006E           L11:
 006E                   .dbline 88
 006E           ;     while(j--);
 006E 262E              mov R2,R22
 0070 3324              clr R3
 0072 6150              subi R22,1
 0074 2220              tst R2
 0076 D9F7              brne L10
 0078                   .dbline 89
 0078           ;     for(i=0;i<8;i++)
 0078 4427              clr R20
 007A 35C0              xjmp L16
 007C           L13:
 007C                   .dbline 90
 007C           ;     {
 007C                   .dbline 91
 007C           ;         if(0x80&Cmd)
 007C A7FE              sbrs R10,7
 007E 19C0              rjmp L17
 0080                   .dbline 92
 0080           ;         {
 0080                   .dbline 93
 0080           ;             SetB(DIO);
 0080 02E0              ldi R16,2
 0082 BEDF              xcall _SetB
 0084                   .dbline 94
 0084           ;             j=Delay;
 0084 62E0              ldi R22,2
 0086           L19:
 0086                   .dbline 95
 0086           L20:
 0086                   .dbline 95
 0086           ;             while(j--);
 0086 262E              mov R2,R22
 0088 3324              clr R3
 008A 6150              subi R22,1
 008C 2220              tst R2
 008E D9F7              brne L19
 0090                   .dbline 97
 0090           ;             
 0090           ;             SetB(CLK);
 0090 01E0              ldi R16,1
 0092 B6DF              xcall _SetB
 0094                   .dbline 98
 0094           ;             j=Delay;
 0094 62E0              ldi R22,2
 0096           L22:
 0096                   .dbline 99
 0096           L23:
 0096                   .dbline 99
 0096           ;             while(j--);
 0096 262E              mov R2,R22
 0098 3324              clr R3
 009A 6150              subi R22,1
 009C 2220              tst R2
 009E D9F7              brne L22
 00A0                   .dbline 101
 00A0           ;             
 00A0           ;             ClrB(CLK);
 00A0 01E0              ldi R16,1
 00A2 BBDF              xcall _ClrB
 00A4                   .dbline 102
 00A4           ;             j=Delay;
 00A4 62E0              ldi R22,2
 00A6           L25:
 00A6                   .dbline 103
 00A6           L26:
 00A6                   .dbline 103
 00A6           ;             while(j--);
 00A6 262E              mov R2,R22
 00A8 3324              clr R3
 00AA 6150              subi R22,1
 00AC 2220              tst R2
 00AE D9F7              brne L25
 00B0                   .dbline 104
 00B0           ;         }
 00B0 18C0              xjmp L18
 00B2           L17:
 00B2                   .dbline 106
 00B2           ;         else
 00B2           ;         {
 00B2                   .dbline 107
 00B2           ;             ClrB(DIO);
 00B2 02E0              ldi R16,2
 00B4 B2DF              xcall _ClrB
 00B6                   .dbline 108
 00B6           ;             j=Delay;
 00B6 62E0              ldi R22,2
 00B8           L28:
 00B8                   .dbline 109
 00B8           L29:
 00B8                   .dbline 109
 00B8           ;             while(j--);
 00B8 262E              mov R2,R22
 00BA 3324              clr R3
 00BC 6150              subi R22,1
 00BE 2220              tst R2
 00C0 D9F7              brne L28
 00C2                   .dbline 111
 00C2           ;             
 00C2           ;             SetB(CLK);
 00C2 01E0              ldi R16,1
 00C4 9DDF              xcall _SetB
 00C6                   .dbline 112
 00C6           ;             j=Delay;
 00C6 62E0              ldi R22,2
 00C8           L31:
 00C8                   .dbline 113
 00C8           L32:
 00C8                   .dbline 113
 00C8           ;             while(j--);
 00C8 262E              mov R2,R22
 00CA 3324              clr R3
 00CC 6150              subi R22,1
 00CE 2220              tst R2
 00D0 D9F7              brne L31
 00D2                   .dbline 115
 00D2           ;             
 00D2           ;             ClrB(CLK);
 00D2 01E0              ldi R16,1
 00D4 A2DF              xcall _ClrB
 00D6                   .dbline 116
 00D6           ;             j=Delay;
 00D6 62E0              ldi R22,2
 00D8           L34:
 00D8                   .dbline 117
 00D8           L35:
 00D8                   .dbline 117
 00D8           ;             while(j--);        
 00D8 262E              mov R2,R22
 00DA 3324              clr R3
 00DC 6150              subi R22,1
 00DE 2220              tst R2
 00E0 D9F7              brne L34
 00E2                   .dbline 118

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -