📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\各种模块设计\模块程序集\ad7705/delay.h
0000 .dbfunc e delay_1us _delay_1us fV
.even
0000 _delay_1us::
0000 .dbline -1
0000 .dbline 6
0000 ; #include <iom128v.h>
0000 ; #include<macros.h>
0000 ; #include "delay.h"
0000 ; #include "7705.h"
0000 ; #include "KeyScay.h"
0000 ; #include "lcd.h"
0000 .dbline 7
0000 ;
0000 0000 nop
0002 .dbline -2
0002 L1:
0002 .dbline 0 ; func end
0002 0895 ret
0004 .dbend
0004 .dbfunc e delay_nus _delay_nus fV
0004 ; i -> R20,R21
0004 ; n -> R22,R23
.even
0004 _delay_nus::
0004 0E940000 xcall push_gset2
0008 B801 movw R22,R16
000A .dbline -1
000A .dbline 11
000A ; /****************************************************************************/
000A ; //功能: AD7705使用
000A ; //输入: 无
000A ; //输出: 无
000A .dbline 12
000A ; //备注:
000A 4427 clr R20
000C 5527 clr R21
000E .dbline 13
000E ; /****************************************************************************/
000E 03C0 xjmp L6
0010 L3:
0010 .dbline 14
0010 F7DF xcall _delay_1us
0012 L4:
0012 .dbline 13
0012 4F5F subi R20,255 ; offset = 1
0014 5F4F sbci R21,255
0016 L6:
0016 .dbline 13
0016 4617 cp R20,R22
0018 5707 cpc R21,R23
001A D0F3 brlo L3
001C .dbline -2
001C L2:
001C 0E940000 xcall pop_gset2
0020 .dbline 0 ; func end
0020 0895 ret
0022 .dbsym r i 20 i
0022 .dbsym r n 22 i
0022 .dbend
0022 .dbfunc e delay_1ms _delay_1ms fV
0022 ; i -> R16,R17
.even
0022 _delay_1ms::
0022 .dbline -1
0022 .dbline 18
0022 ; /***************************全局变量声明*************************************/
0022 ; uint vol16bit=0;
0022 ; uchar test1[]=" AD7705TEST ";
0022 ; uint vint=0;
0022 ; float voltemp=0;
0022 .dbline 20
0022 0027 clr R16
0024 1127 clr R17
0026 02C0 xjmp L11
0028 L8:
0028 .dbline 20
0028 L9:
0028 .dbline 20
0028 0F5F subi R16,255 ; offset = 1
002A 1F4F sbci R17,255
002C L11:
002C .dbline 20
002C ; uchar flag=0;
002C ;
002C 0637 cpi R16,118
002E E4E0 ldi R30,4
0030 1E07 cpc R17,R30
0032 D0F3 brlo L8
0034 .dbline -2
0034 L7:
0034 .dbline 0 ; func end
0034 0895 ret
0036 .dbsym r i 16 i
0036 .dbend
0036 .dbfunc e delay_nms _delay_nms fV
0036 ; i -> R20,R21
0036 ; n -> R22,R23
.even
0036 _delay_nms::
0036 0E940000 xcall push_gset2
003A B801 movw R22,R16
003C .dbline -1
003C .dbline 24
003C ; //void int0_isr(void);
003C ; /****************************************************************************/
003C ; //函数名: ad7705()
003C ; //功能: 实现模数转换
003C .dbline 25
003C ; //输入: chan(通道)
003C 4427 clr R20
003E 5527 clr R21
0040 .dbline 26
0040 ; //输出: adc16(经ADC转换后的16位2进制数)
0040 03C0 xjmp L16
0042 L13:
0042 .dbline 27
0042 .dbline 28
0042 EFDF xcall _delay_1ms
0044 .dbline 29
0044 L14:
0044 .dbline 26
0044 4F5F subi R20,255 ; offset = 1
0046 5F4F sbci R21,255
0048 L16:
0048 .dbline 26
0048 4617 cp R20,R22
004A 5707 cpc R21,R23
004C D0F3 brlo L13
004E .dbline -2
004E L12:
004E 0E940000 xcall pop_gset2
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbsym r i 20 i
0054 .dbsym r n 22 i
0054 .dbend
0054 .dbfile D:\各种模块设计\模块程序集\ad7705/7705.h
0054 .dbfunc e init_adc7705 _init_adc7705 fV
0054 ; i -> R20
.even
0054 _init_adc7705::
0054 0E940000 xcall push_gset1
0058 .dbline -1
0058 .dbline 32
0058 ; //备注:
0058 ; /****************************************************************************/
0058 ; //unsigned int ad7705(unsigned char chan)
0058 ; //{ unsigned int adc16=0;
0058 ; //init_adc7705();
0058 ; //adc16=read_adc7705(0);
0058 .dbline 34
0058 ; //return(adc16);
0058 ; //}
0058 80916200 lds R24,98
005C 8160 ori R24,1
005E 80936200 sts 98,R24
0062 .dbline 35
0062 ; /****************************************************************************/
0062 80916200 lds R24,98
0066 8260 ori R24,2
0068 80936200 sts 98,R24
006C .dbline 36
006C ; //函数名: main(void)
006C 4427 clr R20
006E 0BC0 xjmp L21
0070 L18:
0070 .dbline 37
0070 .dbline 37
0070 80916200 lds R24,98
0074 8E7F andi R24,254
0076 80936200 sts 98,R24
007A .dbline 37
007A 80916200 lds R24,98
007E 8160 ori R24,1
0080 80936200 sts 98,R24
0084 .dbline 37
0084 L19:
0084 .dbline 36
0084 4395 inc R20
0086 L21:
0086 .dbline 36
0086 4832 cpi R20,40
0088 98F3 brlo L18
008A .dbline 38
008A ; //功能: 主函数
008A ; //输入: 无
008A 00E2 ldi R16,32
008C 0CD0 xcall _write_adc7705
008E .dbline 39
008E ; //输出: 无
008E 06E0 ldi R16,6
0090 0AD0 xcall _write_adc7705
0092 .dbline 40
0092 ; //备注:
0092 00E1 ldi R16,16
0094 08D0 xcall _write_adc7705
0096 .dbline 41
0096 ; /****************************************************************************/
0096 04E4 ldi R16,68
0098 06D0 xcall _write_adc7705
009A .dbline 42
009A ; void main(void)
009A 04E6 ldi R16,100
009C 10E0 ldi R17,0
009E CBDF xcall _delay_nms
00A0 .dbline -2
00A0 L17:
00A0 0E940000 xcall pop_gset1
00A4 .dbline 0 ; func end
00A4 0895 ret
00A6 .dbsym r i 20 c
00A6 .dbend
00A6 .dbfunc e write_adc7705 _write_adc7705 fV
00A6 ; cmd -> R20
00A6 ; i -> R22
00A6 ; token -> R10
00A6 ; cmd_data -> R22
.even
00A6 _write_adc7705::
00A6 0E940000 xcall push_gset3
00AA 602F mov R22,R16
00AC .dbline -1
00AC .dbline 52
00AC ; {
00AC ; uchar tongdao=0x00;
00AC ; uchar key_vale;
00AC ;
00AC ; DDRF=0xF3;
00AC ; PORTF=0xFF;
00AC ; DDRD=0xf7; //PD0为输入,与键盘的所有行线连接,采用键盘中断查询法
00AC ; MCUCR=0x30; //打开SE和SM1,允许sleep和power_down模式
00AC ; EIMSK=0x01; //允许外部中断INT0,低电平触发中断
00AC ; LCD_init();
00AC .dbline 54
00AC ; LCD_DisplayString(1,1,test1);
00AC ;
00AC 80E8 ldi R24,128
00AE A82E mov R10,R24
00B0 .dbline 54
00B0 462F mov R20,R22
00B2 .dbline 55
00B2 ; while(1)
00B2 80916200 lds R24,98
00B6 8160 ori R24,1
00B8 80936200 sts 98,R24
00BC .dbline 56
00BC ; {
00BC 6627 clr R22
00BE 23C0 xjmp L26
00C0 L23:
00C0 .dbline 57
00C0 ; CLI();
00C0 .dbline 58
00C0 ; SEI();
00C0 80916200 lds R24,98
00C4 8E7F andi R24,254
00C6 80936200 sts 98,R24
00CA .dbline 59
00CA ; asm("sleep"); //进入sleep模式
00CA 02E0 ldi R16,2
00CC 10E0 ldi R17,0
00CE 9ADF xcall _delay_nus
00D0 .dbline 60
00D0 ;
00D0 242E mov R2,R20
00D2 2A20 and R2,R10
00D4 31F0 breq L27
00D6 .dbline 60
00D6 80916200 lds R24,98
00DA 8260 ori R24,2
00DC 80936200 sts 98,R24
00E0 05C0 xjmp L28
00E2 L27:
00E2 .dbline 61
00E2 ; if(flag=1)
00E2 80916200 lds R24,98
00E6 8D7F andi R24,253
00E8 80936200 sts 98,R24
00EC L28:
00EC .dbline 62
00EC 02E0 ldi R16,2
00EE 10E0 ldi R17,0
00F0 89DF xcall _delay_nus
00F2 .dbline 63
00F2 80916200 lds R24,98
00F6 8160 ori R24,1
00F8 80936200 sts 98,R24
00FC .dbline 64
00FC 05E0 ldi R16,5
00FE 10E0 ldi R17,0
0100 81DF xcall _delay_nus
0102 .dbline 65
0102 A694 lsr R10
0104 .dbline 66
0104 L24:
0104 .dbline 56
0104 6395 inc R22
0106 L26:
0106 .dbline 56
0106 6830 cpi R22,8
0108 D8F2 brlo L23
010A .dbline 67
010A ; {
010A ; key_vale=key_scay();
010A ;
010A ; if(key_vale==10)
010A ; {
010A ; vol16bit=ad7705(tongdao);
010A 80916200 lds R24,98
010E 8160 ori R24,1
0110 80936200 sts 98,R24
0114 .dbline 67
0114 80916200 lds R24,98
0118 8260 ori R24,2
011A 80936200 sts 98,R24
011E .dbline -2
011E L22:
011E 0E940000 xcall pop_gset3
0122 .dbline 0 ; func end
0122 0895 ret
0124 .dbsym r cmd 20 c
0124 .dbsym r i 22 c
0124 .dbsym r token 10 c
0124 .dbsym r cmd_data 22 c
0124 .dbend
0124 .dbfunc e read_adc7705 _read_adc7705 fi
0124 ; token -> <dead>
0124 ; i -> R20
0124 ; ad16bit -> R22,R23
0124 ; channel -> R20
.even
0124 _read_adc7705::
0124 0E940000 xcall push_gset2
0128 402F mov R20,R16
012A .dbline -1
012A .dbline 77
012A ; voltemp=(vol16bit/65535.0)*2500;
012A ; vint=(int)voltemp;
012A ; LCD_DisplayInt(2,5,vint);
012A ; delay_nms(1);
012A ; }
012A ; }
012A ; }
012A ;
012A ; }
012A ;
012A .dbline 80
012A ;
012A ; //功能:键盘中断扫描程序,外部0中断
012A ; #pragma interrupt_handler int0_isr:2
012A 042F mov R16,R20
012C 0863 ori R16,56
012E BBDF xcall _write_adc7705
0130 L30:
0130 .dbline 81
0130 .dbline 81
0130 .dbline 81
0130 L31:
0130 .dbline 81
0130 ; void int0_isr(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -