📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile C:\avr3\main.c
0000 .dbfunc e main _main fV
0000 ; x -> R20
.even
0000 _main::
0000 .dbline -1
0000 .dbline 7
0000 ; #include"main.h"
0000 ; extern void keysy(void);
0000 ;
0000 ;
0000 ; /*===============主函数部分===================*/
0000 ; void main(void)
0000 ; {
0000 .dbline 20
0000 4427 clr R20
0002 09C0 rjmp L5
0004 L2:
0004 .dbline 20
0004 80E0 ldi R24,<_LCD
0006 90E0 ldi R25,>_LCD
0008 E42F mov R30,R20
000A FF27 clr R31
000C E80F add R30,R24
000E F91F adc R31,R25
0010 8FEF ldi R24,255
0012 8083 std z+0,R24
0014 L3:
0014 .dbline 20
0014 4395 inc R20
0016 L5:
0016 .dbline 20
0016 ; // unsigned int i;
0016 ; unsigned char x ;
0016 ; /*===============初始化函数============*/
0016 ; // init_1622();
0016 ; /*
0016 ; ======================================
0016 ; 采用定时器管理
0016 ; 定时器0预分频系数为1024,定时时间为1.25MS
0016 ; 初值为=256-1.25*14.7456*1000000/1024/1000=238
0016 ; 首先要开启定时器0,
0016 ; =========================================
0016 ; */
0016 ; for(x=0;x<23;x++) LCD[x]=0XFF;
0016 4731 cpi R20,23
0018 A8F3 brlo L2
001A .dbline 22
001A ;
001A ; TCCR0=0X05; //预分频系数为1024 0000 0101
001A 85E0 ldi R24,5
001C 83BF out 0x33,R24
001E .dbline 23
001E ; TCNT0=0XEE; //238
001E 8EEE ldi R24,238
0020 82BF out 0x32,R24
0022 .dbline 24
0022 ; TIMSK|=0X01; //使能T/C0中断,允许中断
0022 89B7 in R24,0x39
0024 8160 ori R24,1
0026 89BF out 0x39,R24
0028 .dbline 26
0028 ;
0028 ; DDRD&=0XF3; //PIND2 PIND3设为输入
0028 81B3 in R24,0x11
002A 837F andi R24,243
002C 81BB out 0x11,R24
002E .dbline 27
002E ; MCUCR=0X08; //00001000下降沿触发中断、GICR
002E 88E0 ldi R24,8
0030 85BF out 0x35,R24
0032 .dbline 35
0032 ; //ISC11,ISC10 INT1下降沿
0032 ;
0032 ; /*========PB2输出PWM信号WGM[3;0]=1011
0032 ; ========加一计数中比较匹配时清零OC1B
0032 ; ========减一计数中比较匹配时置位
0032 ; ========CS12,CS11,CS10=010,表示8预分频计时器
0032 ; */
0032 ; DDRB|=0X3e;//PB2为输出端,(pb3,pb4,pb5为液晶驱动脚设为输出)
0032 87B3 in R24,0x17
0034 8E63 ori R24,62
0036 87BB out 0x17,R24
0038 .dbline 36
0038 ; TCCR1A=0X63; //0110 0011
0038 83E6 ldi R24,99
003A 8FBD out 0x2f,R24
003C .dbline 37
003C ; TCCR1B=0X12; //0001 0010
003C 82E1 ldi R24,18
003E 8EBD out 0x2e,R24
0040 .dbline 38
0040 ; OCR1A=0x61A7; //设置TOP值为1249
0040 87EA ldi R24,24999
0042 91E6 ldi R25,97
0044 9BBD out 0x2b,R25
0046 8ABD out 0x2a,R24
0048 .dbline 39
0048 ; OCR1B=2500; //比较匹配值
0048 84EC ldi R24,2500
004A 99E0 ldi R25,9
004C 99BD out 0x29,R25
004E 88BD out 0x28,R24
0050 .dbline 41
0050 ;
0050 ; SREG =0X80; //使能总中断
0050 80E8 ldi R24,128
0052 8FBF out 0x3f,R24
0054 .dbline 42
0054 ; MBZ=0;
0054 2224 clr R2
0056 20922B00 sts _MBZ,R2
005A 12C0 rjmp L7
005C L6:
005C .dbline 44
005C ; while(1)
005C ; {
005C .dbline 45
005C ; keysy();
005C 00D0 rcall _keysy
005E .dbline 46
005E ; DDRD|=BIT(PD7); //PD7设为输出
005E 8F9A sbi 0x11,7
0060 .dbline 47
0060 ; DDRD|=BIT(PD6);
0060 8E9A sbi 0x11,6
0062 .dbline 48
0062 ; if(MBZ==0)
0062 20902B00 lds R2,_MBZ
0066 2220 tst R2
0068 09F4 brne L9
006A .dbline 49
006A ; {
006A .dbline 50
006A ; LED_LIANG; //PD7为1,点亮LED指示灯
006A 979A sbi 0x12,7
006C .dbline 51
006C ; }
006C L9:
006C .dbline 52
006C ; if(MBZ==1)
006C 80912B00 lds R24,_MBZ
0070 8130 cpi R24,1
0072 31F4 brne L11
0074 .dbline 53
0074 ; {
0074 .dbline 54
0074 ; LED_MIE;
0074 9798 cbi 0x12,7
0076 .dbline 55
0076 ; BIT_80|=0x80;//a.BEEP1=1;
0076 80910200 lds R24,_BIT_80
007A 8068 ori R24,128
007C 80930200 sts _BIT_80,R24
0080 .dbline 56
0080 ; }
0080 L11:
0080 .dbline 57
0080 L7:
0080 .dbline 43
0080 EDCF rjmp L6
0082 X0:
0082 .dbline -2
0082 L1:
0082 .dbline 0 ; func end
0082 0895 ret
0084 .dbsym r x 20 c
0084 .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\avr3\main.c
0000 _TMS::
0000 .blkb 2
0002 .dbfile C:\avr3/main.h
0002 .dbsym e TMS _TMS i
0002 _BIT_80::
0002 .blkb 1
0003 .dbsym e BIT_80 _BIT_80 c
0003 _CHW::
0003 .blkb 1
0004 .dbsym e CHW _CHW c
0004 _KEY::
0004 .blkb 1
0005 .dbsym e KEY _KEY c
0005 _KKEY_n::
0005 .blkb 14
0013 .dbsym e KKEY_n _KKEY_n A[14:14]c
0013 _LCD::
0013 .blkb 23
002A .dbsym e LCD _LCD A[23:23]c
002A _VARIA_BIT::
002A .blkb 1
002B .dbsym e VARIA_BIT _VARIA_BIT c
002B _MBZ::
002B .blkb 1
002C .dbsym e MBZ _MBZ c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -