?? laserbeam.lis
字號(hào):
.module LaserBeam.c
.area text(rom, con, rel)
0000 .dbfile C:\DOCUME~2\hb\MYDOCU~1\電子窗戶防盜網(wǎng)\單片機(jī)程序1.1\LaserBeam.c
0000 .dbfunc e DelayUs _DelayUs fV
0000 ; a -> R20,R21
0000 ; t -> R16,R17
.even
0000 _DelayUs::
0000 00D0 rcall push_gset1
0002 .dbline -1
0002 .dbline 12
0002 ; /*
0002 ; 電子窗戶防盜網(wǎng)
0002 ; main.c
0002 ; 硬件:CA-M8
0002 ; 時(shí)鐘:1MHz
0002 ; */
0002 ;
0002 ; #include <io8515v.h>
0002 ; #include <macros.h>
0002 ;
0002 ; void DelayUs(unsigned int t)
0002 ; {
0002 .dbline 14
0002 41E0 ldi R20,1
0004 50E0 ldi R21,0
0006 02C0 rjmp L5
0008 L2:
0008 .dbline 14
0008 .dbline 14
0008 .dbline 14
0008 L3:
0008 .dbline 14
0008 4F5F subi R20,255 ; offset = 1
000A 5F4F sbci R21,255
000C L5:
000C .dbline 14
000C ; int a;
000C ; for (a = 1; a<t; a++){;}
000C 4017 cp R20,R16
000E 5107 cpc R21,R17
0010 D8F3 brlo L2
0012 .dbline -2
0012 .dbline 15
0012 ; }
0012 L1:
0012 00D0 rcall pop_gset1
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbsym r a 20 I
0016 .dbsym r t 16 i
0016 .dbend
0016 .dbfunc e DelayMs _DelayMs fV
0016 ; a -> R20,R21
0016 ; b -> R22,R23
0016 ; t -> R16,R17
.even
0016 _DelayMs::
0016 00D0 rcall push_gset2
0018 .dbline -1
0018 .dbline 18
0018 ;
0018 ; void DelayMs(unsigned int t)
0018 ; {
0018 .dbline 20
0018 41E0 ldi R20,1
001A 50E0 ldi R21,0
001C 0AC0 rjmp L10
001E L7:
001E .dbline 20
001E ; int a, b;
001E ; for (a = 1; a<t; a++){
001E .dbline 21
001E 61E0 ldi R22,1
0020 70E0 ldi R23,0
0022 L11:
0022 .dbline 21
0022 .dbline 21
0022 .dbline 21
0022 L12:
0022 .dbline 21
0022 6F5F subi R22,255 ; offset = 1
0024 7F4F sbci R23,255
0026 .dbline 21
0026 6639 cpi R22,150
0028 E0E0 ldi R30,0
002A 7E07 cpc R23,R30
002C D4F3 brlt L11
002E .dbline 22
002E L8:
002E .dbline 20
002E 4F5F subi R20,255 ; offset = 1
0030 5F4F sbci R21,255
0032 L10:
0032 .dbline 20
0032 4017 cp R20,R16
0034 5107 cpc R21,R17
0036 98F3 brlo L7
0038 .dbline -2
0038 .dbline 23
0038 ; for (b = 1; b<150; b++){;}
0038 ; }
0038 ; }
0038 L6:
0038 00D0 rcall pop_gset2
003A .dbline 0 ; func end
003A 0895 ret
003C .dbsym r a 20 I
003C .dbsym r b 22 I
003C .dbsym r t 16 i
003C .dbend
003C .dbfunc e main _main fV
003C ; Alarm2_Time -> y+6
003C ; Alarm1_Time -> y+4
003C ; Alarm2_triggered -> y+2
003C ; Time_Alarm -> R14,R15
003C ; Alarm1_triggered -> y+0
003C ; d -> R20
003C ; b -> R22
003C ; i -> R10
003C ; a -> R12
.even
003C _main::
003C 2897 sbiw R28,8
003E .dbline -1
003E .dbline 26
003E ;
003E ; void main()
003E ; {
003E .dbline 31
003E ; unsigned char i,a,b,d;
003E ; int Alarm1_triggered,Alarm2_triggered;
003E ; int Time_Alarm,Alarm1_Time,Alarm2_Time;
003E ;
003E ; Alarm1_triggered =0; //警報(bào)1觸發(fā)標(biāo)記,沒(méi)有觸發(fā)為0,觸發(fā)為1
003E 0024 clr R0
0040 1124 clr R1
0042 1982 std y+1,R1
0044 0882 std y+0,R0
0046 .dbline 32
0046 ; Alarm2_triggered =0; //警報(bào)2觸發(fā)標(biāo)記,沒(méi)有觸發(fā)為0,觸發(fā)為1
0046 1B82 std y+3,R1
0048 0A82 std y+2,R0
004A .dbline 33
004A ; Alarm1_Time = 30; //第一級(jí)(低音)報(bào)警時(shí)間(毫秒)
004A 8EE1 ldi R24,30
004C 90E0 ldi R25,0
004E 9D83 std y+5,R25
0050 8C83 std y+4,R24
0052 .dbline 34
0052 ; Alarm2_Time = 40; //第二級(jí)(高音)報(bào)警時(shí)間(毫秒)
0052 88E2 ldi R24,40
0054 9F83 std y+7,R25
0056 8E83 std y+6,R24
0058 .dbline 35
0058 ; DDRC = 0xFF; //整個(gè)C口設(shè)置為輸出
0058 8FEF ldi R24,255
005A 84BB out 0x14,R24
005C .dbline 36
005C ; PORTC =0; //C口輸出為0
005C 2224 clr R2
005E 25BA out 0x15,R2
0060 8DC0 rjmp L17
0062 L16:
0062 .dbline 37
0062 ; while (1){
0062 .dbline 38
0062 ; if((Alarm1_triggered==0) && (Alarm2_triggered==0)){
0062 0880 ldd R0,y+0
0064 1980 ldd R1,y+1
0066 0020 tst R0
0068 09F0 breq X4
006A 53C0 rjmp L19
006C X4:
006C 1120 tst R1
006E 09F0 breq X5
0070 50C0 rjmp L19
0072 X5:
0072 X0:
0072 0A80 ldd R0,y+2
0074 1B80 ldd R1,y+3
0076 0020 tst R0
0078 09F0 breq X6
007A 4BC0 rjmp L19
007C X6:
007C 1120 tst R1
007E 09F0 breq X7
0080 48C0 rjmp L19
0082 X7:
0082 X1:
0082 .dbline 38
0082 .dbline 39
0082 ; DDRD = 0; // 整個(gè)D口設(shè)置為輸入
0082 2224 clr R2
0084 21BA out 0x11,R2
0086 .dbline 40
0086 ; PORTD =0xFF; // D口上拉電阻全部有效
0086 8FEF ldi R24,255
0088 82BB out 0x12,R24
008A .dbline 41
008A ; PORTC = PORTC & (~1); // C口第3腳C1輸出低電平
008A A898 cbi 0x15,0
008C .dbline 42
008C ; PORTC = PORTC | 2; // C口第2腳C2輸出高電平
008C A99A sbi 0x15,1
008E .dbline 43
008E ; a =1;
008E CC24 clr R12
0090 C394 inc R12
0092 .dbline 44
0092 AA24 clr R10
0094 17C0 rjmp L24
0096 L21:
0096 .dbline 44
0096 ; for(i = 0; i < 8; i++){
0096 .dbline 45
0096 ; DDRB = a; // B口第i腳設(shè)置為輸出
0096 C7BA out 0x17,R12
0098 .dbline 46
0098 ; PORTB = 0xFF; // B口第i腳輸出高電平,其他腳為輸入腳,上拉電阻有效
0098 8FEF ldi R24,255
009A 88BB out 0x18,R24
009C .dbline 47
009C ; DelayUs(50); // 延時(shí)50微秒(20微秒不工作,25微秒以上就可以很好工作)
009C 02E3 ldi R16,50
009E 10E0 ldi R17,0
00A0 AFDF rcall _DelayUs
00A2 .dbline 48
00A2 ; b = PINB;
00A2 66B3 in R22,0x16
00A4 .dbline 49
00A4 ; d = ~PIND;
00A4 40B3 in R20,0x10
00A6 4095 com R20
00A8 .dbline 50
00A8 4C15 cp R20,R12
00AA 11F4 brne L27
00AC 6F3F cpi R22,255
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -