📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _BCDdata::
0000 .blkb 2
.area idata
0000 0102 .byte 1,2
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 0304 .byte 3,4
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 0506 .byte 5,6
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 0708 .byte 7,8
.area data(ram, con, rel)
0008 .dbfile G:\CH452L/ch452ldriver.h
0008 .dbsym e BCDdata _BCDdata A[8:8]c
.area text(rom, con, rel)
0000 .dbfile G:\CH452L/ch452ldriver.h
0000 .dbfile G:\CH452L\main.c
0000 .dbfunc e Init_Uart _Init_Uart fI
.even
0000 _Init_Uart::
0000 .dbline -1
0000 .dbline 13
0000 ; #include<iom8v.h>
0000 ; #include<macros.h>
0000 ; #include"delay.h"
0000 ; #include"ch452ldriver.h"
0000 ;
0000 ; /*******************************************************************
0000 ; *函数名称:初始化串口
0000 ; *函数功能:初始化USART为波特率9600,8bit数据,收发使能,接收中断允许
0000 ; *入口参数:无
0000 ; *出口参数:无
0000 ; ******************************************************************/
0000 ; int Init_Uart(void)
0000 ; {
0000 .dbline 14
0000 ; CLI(); //初始化USART时先关全局中断
0000 F894 cli
0002 .dbline 15
0002 ; UCSRB = 0x00;
0002 2224 clr R2
0004 2AB8 out 0xa,R2
0006 .dbline 16
0006 ; UCSRA = 0x00;
0006 2BB8 out 0xb,R2
0008 .dbline 17
0008 ; UCSRC = BIT(URSEL) | 0x06;
0008 86E8 ldi R24,134
000A 80BD out 0x20,R24
000C .dbline 18
000C ; UBRRL = 0x33; //设置波特率低位
000C 83E3 ldi R24,51
000E 89B9 out 0x9,R24
0010 .dbline 19
0010 ; UBRRH = 0x00; //设置波特率高位
0010 20BC out 0x20,R2
0012 .dbline 20
0012 ; UCSRB = 0x98;
0012 88E9 ldi R24,152
0014 8AB9 out 0xa,R24
0016 .dbline 21
0016 ; SEI();
0016 7894 sei
0018 .dbline 22
0018 ; return 0x30;
0018 00E3 ldi R16,48
001A 10E0 ldi R17,0
001C .dbline -2
001C L1:
001C .dbline 0 ; func end
001C 0895 ret
001E .dbend
001E .dbfunc e Uart_Transmit _Uart_Transmit fV
001E ; data -> R16
.even
001E _Uart_Transmit::
001E .dbline -1
001E .dbline 32
001E ; }
001E ;
001E ; /*************************************************
001E ; 函数名称:void Us0Transmit (unsigned char data)
001E ; 函数功能:发送数据
001E ; 入口参数:unsigned char data
001E ; 出口参数:无
001E ; *************************************************/
001E ; void Uart_Transmit (unsigned char data)
001E ; {
001E L3:
001E .dbline 33
001E L4:
001E .dbline 33
001E ; while ( !(UCSRA & (1<<UDRE))); //等待UDR为空
001E 5D9B sbis 0xb,5
0020 FECF rjmp L3
0022 .dbline 34
0022 ; UDR = data;
0022 0CB9 out 0xc,R16
0024 .dbline -2
0024 L2:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbsym r data 16 c
0026 .dbend
.area vector(rom, abs)
.org 22
0016 13C0 rjmp _UartRxIsr
.area text(rom, con, rel)
0026 .dbfile G:\CH452L\main.c
0026 .dbfunc e UartRxIsr _UartRxIsr fV
.even
0026 _UartRxIsr::
0026 0A92 st -y,R0
0028 0FB6 in R0,0x3f
002A 0A92 st -y,R0
002C .dbline -1
002C .dbline 42
002C ; }
002C ;
002C ; //UART中断接收服务函数,形如 04 xx 02 xx (xx xx)
002C ; //其中04为接收的标志,02为接收的长度(可变),括号里的为数据
002C ; //接收成功后,置位Us0RCoF,接收到的数据保存在Us0BufRec中,保存的数据是整个数据包
002C ; #pragma interrupt_handler UartRxIsr:12
002C ; void UartRxIsr(void)
002C ; {
002C .dbline 45
002C ; //unsigned char temp;
002C ; //temp = UDR; //取出数据
002C ; asm("nop");
002C 0000 nop
002E .dbline -2
002E L6:
002E 0990 ld R0,y+
0030 0FBE out 0x3f,R0
0032 0990 ld R0,y+
0034 .dbline 0 ; func end
0034 1895 reti
0036 .dbend
0036 .dbfunc e main _main fV
0036 ; i -> <dead>
0036 ; temp -> R20
.even
0036 _main::
0036 .dbline -1
0036 .dbline 49
0036 ; }
0036 ;
0036 ; void main(void)
0036 ; {
0036 .dbline 51
0036 ; unsigned char temp,i;
0036 ; Init_Int0();
0036 00D0 rcall _Init_Int0
0038 .dbline 52
0038 ; Delay_Nus(5);
0038 05E0 ldi R16,5
003A 10E0 ldi R17,0
003C 00D0 rcall _Delay_Nus
003E .dbline 53
003E ; Init_Uart();
003E E0DF rcall _Init_Uart
0040 .dbline 54
0040 ; Delay_Nus(5);
0040 05E0 ldi R16,5
0042 10E0 ldi R17,0
0044 00D0 rcall _Delay_Nus
0046 .dbline 55
0046 ; Init_Ch452lport();
0046 00D0 rcall _Init_Ch452lport
0048 .dbline 56
0048 ; Delay_Nus(5);
0048 05E0 ldi R16,5
004A 10E0 ldi R17,0
004C 00D0 rcall _Delay_Nus
004E .dbline 57
004E ; Init_Ch452lsystem();
004E 00D0 rcall _Init_Ch452lsystem
0050 .dbline 58
0050 ; Delay_Nms(1500);
0050 0CED ldi R16,1500
0052 15E0 ldi R17,5
0054 00D0 rcall _Delay_Nms
0056 .dbline 59
0056 ; Display_Ch452lBCD(8,BCDdata);
0056 20E0 ldi R18,<_BCDdata
0058 30E0 ldi R19,>_BCDdata
005A 08E0 ldi R16,8
005C 00D0 rcall _Display_Ch452lBCD
005E .dbline 60
005E ; Delay_Nms(20); //延时
005E 04E1 ldi R16,20
0060 10E0 ldi R17,0
0062 00D0 rcall _Delay_Nms
0064 14C0 rjmp L9
0066 L8:
0066 .dbline 63
0066 ;
0066 ; while(1)
0066 ; {
0066 .dbline 64
0066 ; if(flag==1)
0066 80910000 lds R24,_flag
006A 90910100 lds R25,_flag+1
006E 8130 cpi R24,1
0070 E0E0 ldi R30,0
0072 9E07 cpc R25,R30
0074 61F4 brne L11
0076 .dbline 65
0076 ; {
0076 .dbline 66
0076 ; temp=Read_Keycode();
0076 00D0 rcall _Read_Keycode
0078 402F mov R20,R16
007A .dbline 67
007A ; Uart_Transmit(0x02);
007A 02E0 ldi R16,2
007C D0DF rcall _Uart_Transmit
007E .dbline 68
007E ; Uart_Transmit(temp);
007E 042F mov R16,R20
0080 CEDF rcall _Uart_Transmit
0082 .dbline 69
0082 ; flag=0;
0082 2224 clr R2
0084 3324 clr R3
0086 30920100 sts _flag+1,R3
008A 20920000 sts _flag,R2
008E .dbline 70
008E ; }
008E L11:
008E .dbline 98
008E L9:
008E .dbline 62
008E EBCF rjmp L8
0090 X0:
0090 .dbline -2
0090 L7:
0090 .dbline 0 ; func end
0090 0895 ret
0092 .dbsym l i 1 c
0092 .dbsym r temp 20 c
0092 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -