📄 mainok.lis
字号:
.module mainok.c
.area data(ram, con, rel)
0000 _num::
0000 .blkb 2
.area idata
0000 3F06 .byte 63,6
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 5B4F .byte 91,'O
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 666D .byte 'f,'m
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 7D27 .byte 125,39
.area data(ram, con, rel)
0008 .blkb 2
.area idata
0008 7F6F .byte 127,'o
.area data(ram, con, rel)
000A .blkb 2
.area idata
000A FF00 .byte 255,0
.area data(ram, con, rel)
000C .dbfile D:\教学\2008bishe\avrprog\mainok.c
000C .dbsym e num _num A[12:12]c
000C _temp::
000C .blkb 2
.area idata
000C 1E23 .byte 30,35
.area data(ram, con, rel)
000E .dbfile D:\教学\2008bishe\avrprog\mainok.c
000E .blkb 2
.area idata
000E 282D .byte 40,45
.area data(ram, con, rel)
0010 .dbfile D:\教学\2008bishe\avrprog\mainok.c
0010 .dbsym e temp _temp A[4:4]c
.area text(rom, con, rel)
0000 .dbfile D:\教学\2008bishe\avrprog\mainok.c
0000 .dbfunc e delay _delay fV
0000 ; dt -> R16,R17
.even
0000 _delay::
0000 .dbline -1
0000 .dbline 50
0000 ; /***************************************/
0000 ; /* 使用内部震荡,设置4mhz */
0000 ; /****************************************/
0000 ; //2007.12---xieming
0000 ; // 1、使用ICCAVR的终端调试窗口(Terminal),进行通信调试。
0000 ; // 2、对ICCAVR的终端调试窗口进行设置,设置串口为com1或com2,
0000 ; // 通信波特率为19200(Tools->Environment Options...)。
0000 ; // 3、将PC屏幕光标定位于调试窗口中
0000 ; #include "iom8v.h"
0000 ; #include "macros.h"
0000 ; #define osccal 0x7d
0000 ; //内部RC校正常数
0000 ; #define Vref 500//参考电压值
0000 ;
0000 ; unsigned int adc_rel;//AD转换结果
0000 ; unsigned char adc_mux;//AD通道
0000 ;
0000 ; #define set_bit(x,y) (x|=(1<<y))
0000 ; #define clr_bit(x,y) (x&=~(1<<y))
0000 ;
0000 ; //PORT B
0000 ; #define OUT1 5
0000 ; #define OUT2 4
0000 ;
0000 ; unsigned int disnm,smode;
0000 ; unsigned char dis[4];
0000 ; unsigned char num[12]={
0000 ; 0x3f,//------------------0
0000 ; 0x06,//------------------1
0000 ; 0x5b,//------------------2
0000 ; 0x4f,//------------------3
0000 ; 0x66,//------------------4
0000 ; 0x6d,//------------------5
0000 ; 0x7d,//------------------6
0000 ; 0x27,//------------------7
0000 ; 0x7f,//------------------8
0000 ; 0x6f,//------------------9
0000 ; 0xff,//------------------8.
0000 ; 0x00//-------------------none
0000 ; };
0000 ;
0000 ;
0000 ; unsigned char temp[4]={30,35,40,45};
0000 ;
0000 ; unsigned char sd,su,se,sm;
0000 ;
0000 ;
0000 ;
0000 ; void delay(int dt) //delay=(0.95dt+1.76)us
0000 ; {while(dt)
0000 05C0 rjmp L3
0002 L2:
0002 .dbline 51
0002 .dbline 51
0002 0150 subi R16,1
0004 1040 sbci R17,0
0006 .dbline 52
0006 0000 nop
0008 .dbline 53
0008 0000 nop
000A .dbline 54
000A 0000 nop
000C .dbline 55
000C L3:
000C .dbline 50
000C 0030 cpi R16,0
000E 0107 cpc R16,R17
0010 C1F7 brne L2
0012 X0:
0012 .dbline -2
0012 L1:
0012 .dbline 0 ; func end
0012 0895 ret
0014 .dbsym r dt 16 I
0014 .dbend
0014 .dbfunc e display _display fV
0014 ; i -> R20
.even
0014 _display::
0014 00D0 rcall push_gset1
0016 .dbline -1
0016 .dbline 58
0016 ; {dt--;
0016 ; asm("nop");
0016 ; asm("nop");
0016 ; asm("nop");
0016 ; }
0016 ; }
0016 ; void display(void)
0016 ; {unsigned char i;
0016 .dbline 60
0016 ;
0016 ; for(i=0;i<4;i++)
0016 4427 clr R20
0018 20C0 rjmp L9
001A L6:
001A .dbline 61
001A .dbline 61
001A 01E0 ldi R16,1
001C 142F mov R17,R20
001E 00D0 rcall lsl8
0020 202E mov R2,R16
0022 2094 com R2
0024 32B2 in R3,0x12
0026 3220 and R3,R2
0028 32BA out 0x12,R3
002A .dbline 62
002A 80E0 ldi R24,<_dis
002C 90E0 ldi R25,>_dis
002E E42F mov R30,R20
0030 FF27 clr R31
0032 E80F add R30,R24
0034 F91F adc R31,R25
0036 E081 ldd R30,z+0
0038 FF27 clr R31
003A 80E0 ldi R24,<_num
003C 90E0 ldi R25,>_num
003E E80F add R30,R24
0040 F91F adc R31,R25
0042 2080 ldd R2,z+0
0044 28BA out 0x18,R2
0046 .dbline 63
0046 0AE0 ldi R16,10
0048 10E0 ldi R17,0
004A DADF rcall _delay
004C .dbline 64
004C 01E0 ldi R16,1
004E 142F mov R17,R20
0050 00D0 rcall lsl8
0052 22B2 in R2,0x12
0054 202A or R2,R16
0056 22BA out 0x12,R2
0058 .dbline 65
0058 L7:
0058 .dbline 60
0058 4395 inc R20
005A L9:
005A .dbline 60
005A 4430 cpi R20,4
005C F0F2 brlo L6
005E .dbline -2
005E L5:
005E 00D0 rcall pop_gset1
0060 .dbline 0 ; func end
0060 0895 ret
0062 .dbsym r i 20 c
0062 .dbend
0062 .dbfunc e keyscan _keyscan fc
0062 ; tp -> R22
0062 ; keyst -> R20
.even
0062 _keyscan::
0062 00D0 rcall push_gset2
0064 .dbline -1
0064 .dbline 70
0064 ; { clr_bit(PORTD,i);
0064 ; PORTB=num[dis[i]];
0064 ; delay(10);
0064 ; set_bit(PORTD,i);
0064 ; }
0064 ;
0064 ; }
0064 ;
0064 ; unsigned char keyscan(void)
0064 ; { unsigned char keyst,tp;
0064 .dbline 71
0064 ; keyst=PINC;
0064 43B3 in R20,0x13
0066 .dbline 72
0066 ; delay(10);
0066 0AE0 ldi R16,10
0068 10E0 ldi R17,0
006A CADF rcall _delay
006C .dbline 73
006C ; tp=PINC;
006C 63B3 in R22,0x13
006E .dbline 74
006E ; if(tp!=keyst) return 0;
006E 6417 cp R22,R20
0070 11F0 breq L11
0072 .dbline 74
0072 0027 clr R16
0074 3BC0 rjmp L10
0076 L11:
0076 .dbline 75
0076 ; keyst=keyst&0x0f;
0076 4F70 andi R20,15
0078 .dbline 76
0078 ; if(keyst==0x0f)
0078 4F30 cpi R20,15
007A 59F4 brne L13
007C .dbline 77
007C ; {sd=0;su=0;se=0;sm=0;
007C .dbline 77
007C 2224 clr R2
007E 20920300 sts _sd,R2
0082 .dbline 77
0082 20920200 sts _su,R2
0086 .dbline 77
0086 20920100 sts _se,R2
008A .dbline 77
008A 20920000 sts _sm,R2
008E .dbline 78
008E ; return 0;//no button
008E 0027 clr R16
0090 2DC0 rjmp L10
0092 L13:
0092 .dbline 81
0092 .dbline 81
0092 20900300 lds R2,_sd
0096 2220 tst R2
0098 61F4 brne L19
009A 20900100 lds R2,_se
009E 2220 tst R2
00A0 41F4 brne L19
00A2 20900200 lds R2,_su
00A6 2220 tst R2
00A8 21F4 brne L19
00AA 20900000 lds R2,_sm
00AE 2220 tst R2
00B0 11F0 breq L15
00B2 L19:
00B2 .dbline 81
00B2 ; }
00B2 ; else
00B2 ; {if(sd||se||su||sm) return 0;
00B2 0027 clr R16
00B4 1BC0 rjmp L10
00B6 L15:
00B6 .dbline 82
00B6 ; if((keyst&1)==0) {sd=1;return 1;} //down
00B6 40FD sbrc R20,0
00B8 05C0 rjmp L20
00BA .dbline 82
00BA .dbline 82
00BA 81E0 ldi R24,1
00BC 80930300 sts _sd,R24
00C0 .dbline 82
00C0 01E0 ldi R16,1
00C2 14C0 rjmp L10
00C4 L20:
00C4 .dbline 83
00C4 ; else if((keyst&2)==0) {su=1;return 2;}//up
00C4 41FD sbrc R20,1
00C6 05C0 rjmp L22
00C8 .dbline 83
00C8 .dbline 83
00C8 81E0 ldi R24,1
00CA 80930200 sts _su,R24
00CE .dbline 83
00CE 02E0 ldi R16,2
00D0 0DC0 rjmp L10
00D2 L22:
00D2 .dbline 84
00D2 ; else if((keyst&4)==0) {se=1;return 3;}//enter
00D2 42FD sbrc R20,2
00D4 05C0 rjmp L24
00D6 .dbline 84
00D6 .dbline 84
00D6 81E0 ldi R24,1
00D8 80930100 sts _se,R24
00DC .dbline 84
00DC 03E0 ldi R16,3
00DE 06C0 rjmp L10
00E0 L24:
00E0 .dbline 85
00E0 ; else if((keyst&8)==0) {sm=1;return 4;}//mode
00E0 43FD sbrc R20,3
00E2 04C0 rjmp L26
00E4 .dbline 85
00E4 .dbline 85
00E4 81E0 ldi R24,1
00E6 80930000 sts _sm,R24
00EA .dbline 85
00EA 04E0 ldi R16,4
00EC L26:
00EC .dbline 86
00EC ; }
00EC .dbline -2
00EC L10:
00EC 00D0 rcall pop_gset2
00EE .dbline 0 ; func end
00EE 0895 ret
00F0 .dbsym r tp 22 c
00F0 .dbsym r keyst 20 c
00F0 .dbend
00F0 .dbfunc e main _main fV
00F0 ; j -> <dead>
00F0 ; i -> R20,R21
00F0 ; keynm -> R22,R23
.even
00F0 _main::
00F0 .dbline -1
00F0 .dbline 90
00F0 ; }
00F0 ;
00F0 ; void main(void)
00F0 ; {
00F0 .dbline 91
00F0 ; unsigned int j,keynm,i=0;
00F0 4427 clr R20
00F2 5527 clr R21
00F4 .dbline 94
00F4 ;
00F4 ;
00F4 ; DDRB=0xff;/*PORTb is outPUT PORT*/
00F4 8FEF ldi R24,255
00F6 87BB out 0x17,R24
00F8 .dbline 95
00F8 ; PORTB=0xfF;//
00F8 88BB out 0x18,R24
00FA .dbline 96
00FA ; DDRD=0xff; //
00FA 81BB out 0x11,R24
00FC .dbline 97
00FC ; PORTD=0x3f; //
00FC 8FE3 ldi R24,63
00FE 82BB out 0x12,R24
0100 .dbline 99
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -