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

📄 mainok.lis

📁 mega8按键数码显示程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .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 + -