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

📄 main.s

📁 AVR单片机 C语言程序设计经典实用
💻 S
📖 第 1 页 / 共 2 页
字号:
	.module main.c
	.area data(ram, con, rel)
_TimeBCD_V::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.dbsym e TimeBCD_V _TimeBCD_V A[2:2]c
_TimeBCD_H::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.dbsym e TimeBCD_H _TimeBCD_H A[2:2]c
	.area lit(rom, con, rel)
_SegTable::
	.byte 126,96
	.byte 61,'y
	.byte 'c,91
	.byte 95,'p
	.byte 127,123
	.dbsym e SegTable _SegTable A[10:10]kc
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.dbfunc e System_Init _System_Init fV
	.even
_System_Init::
	.dbline -1
	.dbline 28
; #include "iom16v.h"
; #include "DataType.h"
; #include "app.h" 
; 
; #define cSelfTestMode 0
; #define cNormalMode   1
; 
; #define cTraffic_V    0
; #define cTraffic_H    1
; 
; #define cReserved     0
; #define cForbidden    1
; #define cBuffer1      2
; #define cAllow        3
; #define cBuffer2      4
; 
; INT8U ControllerMode;
; INT8U TrafficStatus_V;
; INT8U TrafficStatus_H;
; INT8U Time_V;
; INT8U Time_H;
; INT8U TimeBCD_V[2] = {0,0};
; INT8U TimeBCD_H[2] = {0,0};
; 
; const INT8U SegTable[] = {0x7E,0x60,0x3D,0x79,0x63,0x5B,0x5F,0x70,0x7F,0x7B};
; 
; void System_Init(void)
; {
	.dbline 29
;     ControllerMode = cSelfTestMode;
	clr R2
	sts _ControllerMode,R2
	.dbline 30
;     TrafficStatus_V = cReserved;
	sts _TrafficStatus_V,R2
	.dbline 31
;     TrafficStatus_H = cReserved;
	sts _TrafficStatus_H,R2
	.dbline 32
;     Time_V = 0;
	sts _Time_V,R2
	.dbline 33
;     Time_H = 0;
	sts _Time_H,R2
	.dbline -2
	.dbline 34
; }
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e SetTrafficStatus _SetTrafficStatus fV
;         Status -> R20
;          Index -> R22
	.even
_SetTrafficStatus::
	xcall push_gset2
	mov R20,R18
	mov R22,R16
	.dbline -1
	.dbline 37
; 
; void SetTrafficStatus(INT8U Index,INT8U Status)
; {
	.dbline 38
;     if(Index == cTraffic_V)
	tst R22
	breq X0
	xjmp L3
X0:
	.dbline 39
;     {
	.dbline 40
;         TrafficStatus_V = Status;
	sts _TrafficStatus_V,R20
	.dbline 41
; 			if(Status == cAllow)
	cpi R20,3
	brne L5
	.dbline 42
;         {
	.dbline 43
;            LED_ON_OFF(cR_LED_V,cLED_OFF);
	clr R18
	clr R16
	xcall _LED_ON_OFF
	.dbline 44
;            LED_ON_OFF(cG_LED_V,cLED_ON);
	ldi R18,1
	ldi R16,2
	xcall _LED_ON_OFF
	.dbline 45
;            LED_ON_OFF(cY_LED_V,cLED_OFF);
	clr R18
	ldi R16,1
	xcall _LED_ON_OFF
	.dbline 46
;            Time_V = 30;
	ldi R24,30
	sts _Time_V,R24
	.dbline 47
;         }
	xjmp L4
L5:
	.dbline 48
;         else if((Status == cBuffer1) || (Status == cBuffer2))
	cpi R20,2
	breq L9
	cpi R20,4
	brne L7
L9:
	.dbline 49
;         {
	.dbline 50
;             LED_ON_OFF(cR_LED_V,cLED_OFF);
	clr R18
	clr R16
	xcall _LED_ON_OFF
	.dbline 51
;             LED_ON_OFF(cG_LED_V,cLED_OFF);
	clr R18
	ldi R16,2
	xcall _LED_ON_OFF
	.dbline 52
;             LED_ON_OFF(cY_LED_V,cLED_ON);
	ldi R18,1
	ldi R16,1
	xcall _LED_ON_OFF
	.dbline 53
;             Time_V = 5;
	ldi R24,5
	sts _Time_V,R24
	.dbline 54
;         }
	xjmp L4
L7:
	.dbline 55
;         else if(Status == cForbidden)
	cpi R20,1
	breq X1
	xjmp L4
X1:
	.dbline 56
;         {
	.dbline 57
;             LED_ON_OFF(cR_LED_V,cLED_ON);
	ldi R18,1
	clr R16
	xcall _LED_ON_OFF
	.dbline 58
;             LED_ON_OFF(cG_LED_V,cLED_OFF);
	clr R18
	ldi R16,2
	xcall _LED_ON_OFF
	.dbline 59
;             LED_ON_OFF(cY_LED_V,cLED_OFF);
	clr R18
	ldi R16,1
	xcall _LED_ON_OFF
	.dbline 60
;             Time_V = 30;
	ldi R24,30
	sts _Time_V,R24
	.dbline 61
;         }
	.dbline 62
;     }
	xjmp L4
L3:
	.dbline 63
;     else if(Index == cTraffic_H)
	cpi R22,1
	brne L12
	.dbline 64
;     {
	.dbline 65
;         TrafficStatus_H = Status;
	sts _TrafficStatus_H,R20
	.dbline 66
; 			if(Status == cAllow)
	cpi R20,3
	brne L14
	.dbline 67
;         {
	.dbline 68
;            LED_ON_OFF(cR_LED_H,cLED_OFF);
	clr R18
	ldi R16,3
	xcall _LED_ON_OFF
	.dbline 69
;            LED_ON_OFF(cG_LED_H,cLED_ON);
	ldi R18,1
	ldi R16,5
	xcall _LED_ON_OFF
	.dbline 70
;            LED_ON_OFF(cY_LED_H,cLED_OFF);
	clr R18
	ldi R16,4
	xcall _LED_ON_OFF
	.dbline 71
;            Time_H = 30;
	ldi R24,30
	sts _Time_H,R24
	.dbline 72
;         }
	xjmp L15
L14:
	.dbline 73
;         else if((Status == cBuffer1) || (Status == cBuffer2))
	cpi R20,2
	breq L18
	cpi R20,4
	brne L16
L18:
	.dbline 74
;         {
	.dbline 75
;             LED_ON_OFF(cR_LED_H,cLED_OFF);
	clr R18
	ldi R16,3
	xcall _LED_ON_OFF
	.dbline 76
;             LED_ON_OFF(cG_LED_H,cLED_OFF);
	clr R18
	ldi R16,5
	xcall _LED_ON_OFF
	.dbline 77
;             LED_ON_OFF(cY_LED_H,cLED_ON);
	ldi R18,1
	ldi R16,4
	xcall _LED_ON_OFF
	.dbline 78
;             Time_H = 5;
	ldi R24,5
	sts _Time_H,R24
	.dbline 79
;         }
	xjmp L17
L16:
	.dbline 80
;         else if(Status == cForbidden)
	cpi R20,1
	brne L19
	.dbline 81
;         {
	.dbline 82
;             LED_ON_OFF(cR_LED_H,cLED_ON);
	ldi R18,1
	ldi R16,3
	xcall _LED_ON_OFF
	.dbline 83
;             LED_ON_OFF(cG_LED_H,cLED_OFF);
	clr R18
	ldi R16,5
	xcall _LED_ON_OFF
	.dbline 84
;             LED_ON_OFF(cY_LED_H,cLED_OFF);
	clr R18
	ldi R16,4
	xcall _LED_ON_OFF
	.dbline 85
;             Time_H = 30;
	ldi R24,30
	sts _Time_H,R24
	.dbline 86
;         }
L19:
L17:
L15:
	.dbline 87
;     }
L12:
L4:
	.dbline -2
	.dbline 88
; }   
L2:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r Status 20 c
	.dbsym r Index 22 c
	.dbend
	.dbfunc e main _main fV
	.even
_main::
	.dbline -1
	.dbline 91
;   
; void main(void)
; {
	.dbline 92
;     Hardware_Init();
	xcall _Hardware_Init
	.dbline 93
;     System_Init();
	xcall _System_Init
L22:
	.dbline 95
	.dbline 96
	.dbline 97
L23:
	.dbline 94
	xjmp L22
X2:
	.dbline -2
	.dbline 98
;     while(1)
;     {
;         ;
;     }
; }
L21:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 76
	jmp _Timer0_Interrupt
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
L26:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.dbfunc e Timer0_Interrupt _Timer0_Interrupt fV
	.dbsym s TimeCount L26 c
	.even
_Timer0_Interrupt::
	xcall push_lset
	.dbline -1
	.dbline 102
; 
; #pragma interrupt_handler Timer0_Interrupt:20
; void Timer0_Interrupt(void)
; {
	.dbline 105
; 		 static INT8U TimeCount = 0;
;     //Clear Timer0 OCIF Flag
; 		TIFR  |= 0x02;
	in R24,0x38
	ori R24,2
	out 0x38,R24
	.dbline 106
;     TCNT0  = 0x00;
	clr R2
	out 0x32,R2
	.dbline 107
;     if(ControllerMode == cNormalMode)
	lds R24,_ControllerMode
	cpi R24,1
	breq X3
	xjmp L27
X3:
	.dbline 108
;     {
	.dbline 109
;         INT2BCD(Time_V,TimeBCD_V);
	ldi R18,<_TimeBCD_V
	ldi R19,>_TimeBCD_V
	lds R16,_Time_V
	xcall _INT2BCD
	.dbline 110
;         INT2BCD(Time_H,TimeBCD_H);
	ldi R18,<_TimeBCD_H
	ldi R19,>_TimeBCD_H
	lds R16,_Time_H
	xcall _INT2BCD
	.dbline 111
;         if(TimeCount == 0)
	lds R2,L26
	tst R2
	brne L29
	.dbline 112
;         {
	.dbline 113
;             mSet_Data_V(DataConvert(TimeBCD_V[0]));
	lds R16,_TimeBCD_V
	xcall _DataConvert
	out 0x1b,R16
	.dbline 114
;             mSet_Data_H(DataConvert(TimeBCD_H[0]));
	lds R16,_TimeBCD_H
	xcall _DataConvert
	out 0x12,R16
	.dbline 115
;             mSelect_V0();
	in R24,0x18
	ori R24,48
	andi R24,239
	out 0x18,R24
	.dbline 116
;             mSelect_H0();
	in R24,0x18
	ori R24,192
	andi R24,191
	out 0x18,R24
	.dbline 117
;             TimeCount = 1;
	ldi R24,1
	sts L26,R24
	.dbline 118
;         }
	xjmp L30
L29:
	.dbline 119
;         else if(TimeCount == 1)
	lds R24,L26
	cpi R24,1
	brne L31
	.dbline 120
;         {
	.dbline 121
;             mSet_Data_V(DataConvert(TimeBCD_V[1]));
	lds R16,_TimeBCD_V+1
	xcall _DataConvert
	out 0x1b,R16
	.dbline 122
;             mSet_Data_H(DataConvert(TimeBCD_H[1]));
	lds R16,_TimeBCD_H+1
	xcall _DataConvert
	out 0x12,R16
	.dbline 123
;             mSelect_V1();
	in R24,0x18
	ori R24,48
	andi R24,223
	out 0x18,R24
	.dbline 124
;             mSelect_H1();
	in R24,0x18
	ori R24,192
	andi R24,127
	out 0x18,R24
	.dbline 125
;             TimeCount = 0;
	clr R2
	sts L26,R2
	.dbline 126
;         }
L31:
L30:
	.dbline 127
L27:
	.dbline -2
	.dbline 128
;     }    
; }
L25:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.area vector(rom, abs)
	.org 24
	jmp _Timer1_Interrupt
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
L36:
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.area text(rom, con, rel)
	.dbfile E:\Steaven2000\AVR\AVR_Book\PROGRA~1\SOURCE~1\Code\交通灯控制系统设计\main.c
	.dbfunc e Timer1_Interrupt _Timer1_Interrupt fV
	.dbsym s TimeCount L36 c
	.even
_Timer1_Interrupt::
	xcall push_lset
	.dbline -1
	.dbline 132
; 
; #pragma interrupt_handler Timer1_Interrupt:7
; void Timer1_Interrupt(void)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -