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

📄 sy13.lst

📁 1.熟悉硬件仿真工具KD30的使用。 2.修改样本程序 SAMP1a
💻 LST
📖 第 1 页 / 共 2 页
字号:
* M16C FAMILY ASSEMBLER *   SOURCE LIST       Tue Mar 29 14:22:24 2005  PAGE 001

  SEQ.  LOC.   OBJ.              0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4

     1                                  ;****************************************************************
     2                                  ;*							        *				
     3                                  ;*	SAMPLE PROGRAM	: 1 SEC COUNTER                     	*
     4                                  ;*	FILE NAME	: SAMP1a.A30				*
     5                                  ;*	FUNCTION 	: SW1 => COUNTER START or stop	        *
     6                                  ;*						                *
     7                                  ;*			  SW3 => COUNTER CLEAR	                *
     8                                  ;*								*
     9                                  ;****************************************************************
    10                                  ;
    11                                  ;  Copyright,1999
    12                                  ;  MITSUBISHI ERECTRIC CORPORATION AND
    13                                  ;  MITSUBISHI ERECTRIC SEMICONDUCTOR SOFTWARE CORPORATIOON
    14                                  ;								 
    15                                  ;---------- INCLUDE OF SFR FILE ----------
    16                                  ;
    17                                  	.list		off				; don't draw up a prpgram list
    18                                  	.list		on				; draw up a program list
    19                                  ;
    20                                  ;---------- DEFINE OF SYMBOLS ----------
    21                                  ;
    22  00000400h                       VramTOP		.equ	000400H				; top address of internal RAM 
    23  00002BFFh                       VramEND		.equ	002BFFH				; end address of internal RAM
    24  00002C00h                       VIstack		.equ	002C00H				; stack pointer
    25  000F0000h                       VprogTOP	.equ	0F0000H				; top address of program area
    26  000FA000h                       Vintbase	.equ	0FA000H				; top address of variable vector table
    27  000FFFDCh                       Vvector		.equ	0FFFDCH				; top address of fixed vector table
    28  00000380h                       SB_base		.equ	000380H				; base address of SB recative
    29                                  ;
    30                                  ;---------- KEEP OF RAM AREA ----------
    31                                  ;
    32                                  	.section	memory,data
    33  00400                           	.org		VramTOP
    34                                  ;
    35  00400(000002H)                  LED:		.blkb	2				; LED display data
    36  00402(000001H)                  Tsec:		.blkb	1				; sec buffer
    37  00403(000001H)                  Fdig:		.blkb	1
    38  00404(000001H)                  sw_in:		.blkb	1				; start-stop buffer
    39  00405(000001H)                  cnt_clr: 	.blkb	1				; count clear buffer
    40                                  ;
    41                                  	.section	prog,code
    42  F0000                           	.org		VprogTOP
    43                                  	.sb	SB_base					; assings aprovisional SB register value
    44                                  	.sbsym	LED					; place data in SB addressing mode
    45                                  	.sbsym	Tsec					; place data in SB addressing mode
    46                                  	.sbsym	Fdig					; place data in SB addressing mode
    47                                  ;
    48                                  ;---------- CLEAR OF RAM ----------
    49                                  ;
    50  F0000                           reset:
    51  F0000  EB40002C                 	ldc	#VIstack,ISP				; set Interrupt Stack Pointer
    52  F0004  EB608003                   	ldc	#SB_base,SB				; set SB register
    53                                  ;	ldintb	#Vintbase				; set Interrupt TaBle register
    54                                  ;
    55  F0008  D900                  Q  	mov.w	#0,r0					; 0 clear
    56  F000A  75C30014                 	mov.w	#(VramEND+1-VramTOP)/2,r3		; number of times
    57  F000E  AA0004                S  	mov.w	#VramTOP,a1				; start address
    58  F0011  7DEA                     	sstr.w
    59                                  ;
    60                                  ;---------- INITIALLIZE ----------
    61                                  ;
    62  F0013  EB200F00                 	LDINTB	#USER_vector_table
* M16C FAMILY ASSEMBLER *   SOURCE LIST       Tue Mar 29 14:22:24 2005  PAGE 002

  SEQ.  LOC.   OBJ.              0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4

               EB1000A0 
    63                                  
    64  F001B  D9FA62                Q* 	mov.w	#0FFFFH,pd0				; P0,P1  output set
    65                                  ;
    66  F001E  C7064E00              S  	mov.b	#00000110B,adic				; A-D Interrupt control reg set
    67                                  
    68  F0022  C7065D00              S  	mov.b	#00000110B,int0ic			; INT0 Interrupt control reg set
    69                                  
    70  F0026  C7065E00              S  	mov.b	#00000110B,int1ic			; INT1 Interrupt control reg set
    71                                  
    72  F002A  B75500                Z  	mov.b	#00000000B,ta0ic			; TIMER A0 Interrupt control reg set
    73  F002D  C58016                S* 	mov.b	#80H,ta0mr				; f1*32 = 2 usec
    74  F0030  75CA06E803             * 	mov.w	#1000,ta0				; make 2 msec
    75  F0035  4800                  S* 	bset	ta0s					; TIMER A0 start
    76  F0037  EB64                     	fset    i
    77                                  	
    78                                  ;---------- A-D CONVERTER ----------
    79  F0039  C50154                S* 	mov.b	#01H,adcon2				; A-D register 2
    80  F003C  C5A056                S* 	mov.b	#0A0H,adcon0				; A-D register 0
    81  F003F  C52057                S* 	mov.b	#20H,adcon1				; A-D register 1
    82  F0042  4E56                  S* 	bset	adst					; A-D conversion start
    83                                  ;
    84                                  ;---------- MAIN PROGRAM ----------
    85                                  ;
    86  F0044                           main:
    87  F0044  75C03200                 	mov.w	#50,r0					; 50 => r0
    88  F0048                           check:
    89  F0048  7E0FAB02                 	btstc	3,ta0ic					; 2 msec?
    90                                  
    91  F004C  6CFB                     	jnc	check					; return
    92  F004E  F55D00                W  	jsr	display					; subroutine display
    93  F0051  F9F0F5                   	sbjnz.w	#1,r0,check				; 0.1sec?
    94  F0054  F52600                W  	jsr	timer					; subroutine timer
    95  F0057  FEEC                  B  	jmp	main
    96                                  
    97  F0059                           delay:
    98  F0059  75C13200                         mov.w   #50,r1
    99  F005D  F9F1FE                   loop:	sbjnz.w	#1,r1,loop
   100  F0060  F3                               rts
   101                                  ;
   102                                  ;---------- SWITCH CHECK ----------
   103                                  ;
   104  F0061                           sw_int1:
   105                                  ;========== start ==========
   106  F0061  EB64                     	fset    i
   107  F0063  F5F5FF                W          jsr     delay
   108  F0066  5B70                  S*         btst    3,p8
   109  F0068  680A                             jc      sw1
   110  F006A  E50184                S*         cmp.b   #1,sw_in
   111  F006D  DD008401               *         stzx     #0,#1,sw_in                            ;sw_in=sw_in xor 1	
   112  F0071  B585                  Z* 	mov.b	#0,cnt_clr				; sw_in flag clear
   113  F0073  FB                       sw1:    reit
   114                                  
   115  F0074                           sw_int0:
   116                                  				
   117  F0074  FB                       	reit
   118                                  
   119  F0075                           sw_adtrg:
   120                                  ;========== clear ==========
   121  F0075  EB64                     	fset    i
   122  F0077  C50185                S* 	mov.b	#1,cnt_clr				; timer count flag on
   123  F007A  FB                       	reit
* M16C FAMILY ASSEMBLER *   SOURCE LIST       Tue Mar 29 14:22:24 2005  PAGE 003

  SEQ.  LOC.   OBJ.              0XMSDA ....*....SOURCE STATEMENT....7....*....8....*....9....*....0....*....1....*....2....*....3....*....4

   124                                  ;
   125                                  ;---------- TIMER COUNT ----------
   126                                  ;
   127  F007B                           timer:
   128  F007B  82                    S  	push.b	r0l
   129                                           
   130  F007C  E50184                S* 	cmp.b	#1,sw_in				; sw_in - 1(start?)
   131  F007F  6E19                     	jnz	timer_end				; jump not ZERO
   132  F0081  0982                  S* 	mov.b	Tsec,r0l				; Tsec => r0l
   133  F0083  7CEC01                   	dadd.b	#1,r0l					; 1sec count up
   134  F0086  0182                  S* 	mov.b	r0l,Tsec				; r0l => Tsec
   135  F0088  E50185                S* 	cmp.b	#1,cnt_clr
   136  F008B  CD0082                 * 	stz	#00,Tsec
   137  F008E  CD0084                 * 	stz	#0,sw_in				; sw_in flag clear(stop)
   138  F0091  0982                  S* 	mov.b	Tsec,r0l				; Tsec => r0l
   139  F0093  7C8A80                 * 	movll	r0l,LED					; r0l => LED(low => low)

⌨️ 快捷键说明

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