?? main.s
字號:
.module main.c
.area text(rom, con, rel)
.dbfile D:\MEGA8\西門子3508\3508呼死你/define.h
.dbfunc e delay_us _delay_us fV
; time -> R16,R17
.even
_delay_us::
.dbline -1
.dbline 71
; #include <iom8v.h>
; #include <macros.h>
; #include <eeprom.h>
; #include "uart.h"
; #include "define.h"
; #include "led.h"
;
; #include "uartnews.h"
; #include "timetask.h"
;
; /* 工程名稱: 呼死你
; * 日期: 06-04-26
; * 最后修改日期: 06-04-26
; * 芯片類型: ATmega 8L
; * 晶體: 7.3728MHZ
; * 熔絲位: 8F9F
; * 鎖定位: 00E8
; * 看門狗: 安全極別2-常開 2.1秒溢出
; * 版本:
; * 測試說明: 06-04-26測試
;
;
; /**************************************************
; *原型:void open(void)
; *功能:判斷是初次上電,觸發開機
; *參數:無
; *返回:無
; *日期:04-12-7
; **************************************************/
; //定義開機腳
; #define OPENBIT 7
; #define RESTKEY 3
; void open(void)
; {
; SET_BIT(PORTD,OPENBIT);
;
; delay_ms(2000);
;
; CLR_BIT(PORTD,OPENBIT); //開平觸低
; }
; /**************************************************
; *原型:void port_init(void)
; *功能:端口初始化
; *參數:無
; *返回:無
; **************************************************/
; void port_init(void)
; {
; PORTC = 0X0F; //PC0-PC38870輸入,與按鍵共用,
; DDRC = 0X20;
;
; PORTB = 0X00;
; DDRB = 0X3F; //PB0-PB2,PB5輸出控制,PB3話筒開關,PB4提示聲,PB5警聲
;
; DDRD = 0XF6; //PD0,PD2-AUDIO,PD3輸入
; PORTD = NULL;
;
; RED_LED;//紅燈亮
; }
; /**************************************************
; *原型:void watchdog_init(void)
; *功能:dog初始化
; *參數:無
; *返回:無
; **************************************************/
; void watchdog_init(void)
; {
; WDR(); //清dog
; WDTCR = ( (1<<WDCE) | (1<<WDE) );
; WDTCR = 0x0F; //2.1秒復位
; }
L5:
.dbline 73
; /**************************************************
; *原型:void watchdog_task(void)
.dbline 74
; *功能:判斷是否dog復位,如不是觸發手機開機
subi R16,1
sbci R17,0
.dbline 75
; *參數:無
L6:
.dbline 76
; *返回:無
ldi R24,1
ldi R25,0
cp R24,R16
cpc R25,R17
brlt L5
.dbline -2
L4:
.dbline 0 ; func end
ret
.dbsym r time 16 I
.dbend
.dbfunc e delay_ms _delay_ms fV
; time -> R20,R21
.even
_delay_ms::
rcall push_gset1
movw R20,R16
.dbline -1
.dbline 80
; **************************************************/
; void watchdog_task(void)
; {
; if(!GET_BIT(MCUCSR , WDRF))//是否dog復位
rjmp L10
L9:
.dbline 82
.dbline 83
wdr
.dbline 84
ldi R16,825
ldi R17,3
rcall _delay_us
.dbline 85
subi R20,1
sbci R21,0
.dbline 86
L10:
.dbline 81
; open();
cpi R20,0
cpc R20,R21
brne L9
X0:
.dbline -2
L8:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r time 20 i
.dbend
.dbfile D:\MEGA8\西門子3508\3508呼死你/led.h
.dbfunc e ray_led _ray_led fV
.even
_ray_led::
.dbline -1
.dbline 17
.dbline 18
ldi R24,1
sts _raybz,R24
.dbline 19
.dbline 19
cbi 0x12,4
.dbline 19
cbi 0x12,5
.dbline 19
.dbline 19
.dbline 20
ldi R24,6
sts _LEDCOUNT,R24
.dbline -2
L12:
.dbline 0 ; func end
ret
.dbend
.area bss(ram, con, rel)
.dbfile D:\MEGA8\西門子3508\3508呼死你/led.h
L14:
.blkb 1
.area text(rom, con, rel)
.dbfile D:\MEGA8\西門子3508\3508呼死你/led.h
.dbfunc e LED _LED fc
.dbsym s led1 L14 c
.even
_LED::
.dbline -1
.dbline 29
.dbline 31
lds R16,_LEDCOUNT
clr R17
cpi R16,0
cpc R16,R17
breq L18
X1:
cpi R16,1
ldi R30,0
cpc R17,R30
breq L23
cpi R16,2
ldi R30,0
cpc R17,R30
breq L24
cpi R16,3
ldi R30,0
cpc R17,R30
breq L25
cpi R16,4
ldi R30,0
cpc R17,R30
breq L26
cpi R16,5
ldi R30,0
cpc R17,R30
breq L27
cpi R16,6
ldi R30,0
cpc R17,R30
breq L28
cpi R16,7
ldi R30,0
cpc R17,R30
breq L29
rjmp L15
X2:
.dbline 32
L18:
.dbline 34
lds R2,_Busybz
tst R2
breq L19
.dbline 35
ldi R16,1
rjmp L13
L19:
.dbline 38
ldi R24,2
lds R2,_WorkCount
cp R24,R2
brlo L21
.dbline 39
ldi R16,4
rjmp L13
L21:
.dbline 42
ldi R16,3
rjmp L13
L23:
.dbline 44
.dbline 44
cbi 0x12,4
.dbline 44
cbi 0x12,5
.dbline 44
.dbline 44
.dbline 45
sbi 0x12,4
.dbline 46
ldi R16,6
rjmp L13
L24:
.dbline 48
.dbline 48
cbi 0x12,4
.dbline 48
cbi 0x12,5
.dbline 48
.dbline 48
.dbline 49
sbi 0x12,4
.dbline 50
clr R16
rjmp L13
L25:
.dbline 52
.dbline 52
cbi 0x12,4
.dbline 52
cbi 0x12,5
.dbline 52
.dbline 52
.dbline 53
sbi 0x12,5
.dbline 54
ldi R16,6
rjmp L13
L26:
.dbline 56
sbi 0x12,4
.dbline 57
sbi 0x12,5
.dbline 58
ldi R16,6
rjmp L13
L27:
.dbline 60
.dbline 60
cbi 0x12,4
.dbline 60
cbi 0x12,5
.dbline 60
.dbline 60
.dbline 61
sbi 0x12,5
.dbline 62
clr R16
rjmp L13
L28:
.dbline 64
ldi R24,5
sts L14,R24
L29:
.dbline 66
lds R2,L14
clr R3
mov R24,R2
subi R24,1
sts L14,R24
tst R2
breq L30
.dbline 67
ldi R16,7
rjmp L13
L30:
.dbline 68
lds R2,_raybz
tst R2
brne L32
.dbline 69
.dbline 70
ldi R24,1
sts _raybz,R24
.dbline 71
.dbline 71
cbi 0x12,4
.dbline 71
cbi 0x12,5
.dbline 71
.dbline 71
.dbline 72
ldi R16,6
rjmp L13
L32:
.dbline 74
.dbline 75
clr R2
sts _raybz,R2
.dbline 76
clr R16
L15:
.dbline -2
L13:
.dbline 0 ; func end
ret
.dbend
.dbfile D:\MEGA8\西門子3508\3508呼死你/uartnews.h
.dbfunc e InitUART _InitUART fV
; baudrate -> R16
.even
_InitUART::
.dbline -1
.dbline 10
.dbline 11
out 0x9,R16
.dbline 12
ldi R24,152
out 0xa,R24
.dbline 13
ldi R24,134
out 0x20,R24
.dbline -2
L34:
.dbline 0 ; func end
ret
.dbsym r baudrate 16 c
.dbend
.dbfunc e putchar _putchar fV
; c -> R16
.even
_putchar::
.dbline -1
.dbline 24
L36:
.dbline 25
L37:
.dbline 25
sbis 0xb,5
rjmp L36
.dbline 27
out 0xc,R16
.dbline -2
L35:
.dbline 0 ; func end
ret
.dbsym r c 16 c
.dbend
.dbfunc e puts _puts fV
; s -> R20,R21
.even
_puts::
rcall push_gset1
movw R20,R16
.dbline -1
.dbline 32
rjmp L41
L40:
.dbline 34
.dbline 35
movw R30,R20
ldd R16,z+0
rcall _putchar
.dbline 36
subi R20,255 ; offset = 1
sbci R21,255
.dbline 37
L41:
.dbline 33
movw R30,R20
ldd R2,z+0
tst R2
brne L40
.dbline 38
ldi R16,13
rcall _putchar
.dbline 39
ldi R16,10
rcall _putchar
.dbline -2
L39:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r s 20 pc
.dbend
.dbfunc e putgmgr _putgmgr fV
; s -> R20,R21
.even
_putgmgr::
rcall push_gset1
movw R20,R16
.dbline -1
.dbline 42
rjmp L45
L44:
.dbline 44
.dbline 45
movw R30,R20
ldd R16,z+0
rcall _putchar
.dbline 46
subi R20,255 ; offset = 1
sbci R21,255
.dbline 47
L45:
.dbline 43
movw R30,R20
ldd R2,z+0
tst R2
brne L44
.dbline 48
ldi R16,26
rcall _putchar
.dbline -2
L43:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r s 20 pc
.dbend
.dbfunc e Bj_rx _Bj_rx fc
; count_1 -> R20
; data -> R18
; addrss_1 -> R16
.even
_Bj_rx::
rcall push_gset1
ldd R20,y+2
.dbline -1
.dbline 58
.dbline 59
rjmp L51
L48:
.dbline 60
.dbline 62
ldi R24,<_Uart
ldi R25,>_Uart
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
cp R2,R18
brne L52
.dbline 63
mov R16,R20
rjmp L47
L52:
.dbline 64
L49:
.dbline 59
inc R20
L51:
.dbline 59
cp R20,R16
brlo L48
.dbline 65
clr R16
.dbline -2
L47:
rcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r count_1 20 c
.dbsym r data 18 c
.dbsym r addrss_1 16 c
.dbend
.dbfunc e CopyStr _CopyStr fpc
; s -> R18,R19
; p -> R16,R17
.even
_CopyStr::
.dbline -1
.dbline 76
L55:
.dbline 78
.dbline 79
movw R30,R18
movw R26,R16
ld R0,Z+
movw R18,R30
st X+,R0
movw R16,R26
.dbline 80
L56:
.dbline 81
movw R30,R18
ldd R2,z+0
clr R3
tst R2
breq L58
mov R24,R2
cpi R24,13
brne L55
L58:
.dbline 82
; }
clr R2
movw R30,R16
std z+0,R2
.dbline 83
;
.dbline -2
L54:
.dbline 0 ; func end
ret
.dbsym r s 18 pc
.dbsym r p 16 pc
.dbend
.dbfunc e ReadTime _ReadTime fi
; temp -> R20,R21
; tempval -> R12,R13
; bitcount -> R20
; val -> R22,R23
; count -> R14
; p -> R10,R11
.even
_ReadTime::
rcall push_gset5
movw R10,R16
.dbline -1
.dbline 95
; /**************************************************
; *原型:void init_devices(void)
; *功能:初始化
; *參數:無
; *返回:無
; **************************************************/
; void init_devices(void)
; {
; watchdog_init(); //設置WDT
; port_init(); //I/O口定義
; timer1_init();
; InitUART( 23 ); //19.2 to 7.3728M
.dbline 97
; Time.Sec = timesec;//定時器賦初值
; TIMSK = 0X04;//開T1定時
ldi R20,1
ldi R21,0
.dbline 98
; _SEI();
clr R22
clr R23
.dbline 100
; }
; /*******************************************/
clr R20
rjmp L61
L60:
.dbline 103
.dbline 104
movw R30,R10
ld R14,Z+
movw R10,R30
.dbline 105
mov R24,R14
subi R24,48
mov R14,R24
.dbline 106
ldi R16,10
ldi R17,0
movw R18,R22
rcall empy16s
movw R12,R16
.dbline 107
mov R22,R14
clr R23
add R22,R16
adc R23,R17
.dbline 108
inc R20
.dbline 109
L61:
.dbline 102
; void main( void )
; {
movw R30,R10
ldd R24,z+0
cpi R24,34
breq L63
cpi R20,4
brlo L60
L63:
.dbline 110
; delay_ms(100);
; init_devices(); //系統初始化
; watchdog_task(); //判 斷是否WDT溢出
;
; WorkCount = LINE;
;
; while ( 1 )
; {
movw R16,R22
.dbline -2
L59:
rcall pop_gset5
.dbline 0 ; func end
ret
.dbsym r temp 20 i
.dbsym r tempval 12 i
.dbsym r bitcount 20 c
.dbsym r val 22 i
.dbsym r count 14 c
.dbsym r p 10 pc
.dbend
.dbfunc e Save_tel _Save_tel fV
; i -> R10
; p -> R22,R23
; count -> R20
.even
_Save_tel::
rcall push_gset3
movw R22,R18
mov R20,R16
.dbline -1
.dbline 120
; WDR();
; if(Time.Bz)
; Time1Task();
; if(DealTxUartBz) //處理發送緩沖區
; DealTx();
; if(DealRxUartBz) //處理串口接收緩沖區
; DealRxBuf(UART_RXHEAD);
;
; }
; }
.dbline 121
; /* #endif */
clr R10
.dbline 123
; /* #endif */
; /* #endif */
inc R20
.dbline 125
; /* #endif */
; /* #endif */
ldi R24,65
movw R30,R22
st Z+,R24
.dbline 126
; /* #endif */
ldi R24,84
st Z+,R24
.dbline 127
; /* #endif */
ldi R24,68
st Z+,R24
movw R22,R30
rjmp L66
L65:
.dbline 129
; /* #endif */
; /* #endif */
.dbline 130
; /* #endif */
mov R24,R10
cpi R24,30
brsh L68
.dbline 131
; /* #endif */
ldi R24,<_Uart
ldi R25,>_Uart
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
movw R30,R22
st Z+,R2
movw R22,R30
L68:
.dbline 132
inc R20
.dbline 133
L66:
.dbline 128
ldi R24,<_Uart
ldi R25,>_Uart
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
mov R24,R2
cpi R24,34
breq L70
cpi R24,42
brne L65
L70:
.dbline 134
; /* #endif */
; /* #endif */
; /* #endif */
ldi R24,59
movw R30,R22
st Z+,R24
movw R22,R30
.dbline 135
; /* #endif */
clr R2
std z+0,R2
.dbline 137
; /* #endif */
; /* #endif */
ldi R24,<_Uart
ldi R25,>_Uart
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,42
brne L71
.dbline 138
; /* #endif */
.dbline 139
; /* #endif */
inc R20
.dbline 140
; /* #endif */
ldi R24,<_Uart
ldi R25,>_Uart
mov R16,R20
clr R17
add R16,R24
adc R17,R25
rcall _ReadTime
sts _Time+1+1,R17
sts _Time+1,R16
.dbline 141
; /* #endif */
rjmp L72
L71:
.dbline 143
.dbline 144
clr R2
clr R3
sts _Time+1+1,R3
sts _Time+1,R2
.dbline 145
L72:
.dbline -2
L64:
rcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r i 10 c
.dbsym r p 22 pc
.dbsym r count 20 c
.dbend
.area vector(rom, abs)
.org 22
rjmp _UART_RX_interrupt
.area text(rom, con, rel)
.dbfile D:\MEGA8\西門子3508\3508呼死你/uartnews.h
.dbfunc e UART_RX_interrupt _UART_RX_interrupt fV
; hz1 -> R16
; data -> R18
.even
_UART_RX_interrupt::
st -y,R2
st -y,R16
st -y,R18
st -y,R24
st -y,R25
st -y,R30
st -y,R31
in R2,0x3f
st -y,R2
.dbline -1
.dbline 156
; 碕
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -