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

📄 main.s

📁 ch452的数码管和键盘驱动程序
💻 S
字号:
	.module main.c
	.area data(ram, con, rel)
_BCDdata::
	.blkb 2
	.area idata
	.byte 1,2
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 3,4
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 5,6
	.area data(ram, con, rel)
	.blkb 2
	.area idata
	.byte 7,8
	.area data(ram, con, rel)
	.dbfile G:\CH452L/ch452ldriver.h
	.dbsym e BCDdata _BCDdata A[8:8]c
	.area text(rom, con, rel)
	.dbfile G:\CH452L/ch452ldriver.h
	.dbfile G:\CH452L\main.c
	.dbfunc e Init_Uart _Init_Uart fI
	.even
_Init_Uart::
	.dbline -1
	.dbline 13
; #include<iom8v.h>
; #include<macros.h>
; #include"delay.h"
; #include"ch452ldriver.h"
; 
; /*******************************************************************
; *函数名称:初始化串口
; *函数功能:初始化USART为波特率9600,8bit数据,收发使能,接收中断允许
; *入口参数:无
; *出口参数:无
; ******************************************************************/
; int Init_Uart(void)
; {
	.dbline 14
;     CLI();   //初始化USART时先关全局中断           
	cli
	.dbline 15
;     UCSRB = 0x00;             
	clr R2
	out 0xa,R2
	.dbline 16
;     UCSRA = 0x00;
	out 0xb,R2
	.dbline 17
;     UCSRC = BIT(URSEL) | 0x06;
	ldi R24,134
	out 0x20,R24
	.dbline 18
;     UBRRL = 0x33;             //设置波特率低位
	ldi R24,51
	out 0x9,R24
	.dbline 19
;     UBRRH = 0x00;             //设置波特率高位
	out 0x20,R2
	.dbline 20
;     UCSRB = 0x98;
	ldi R24,152
	out 0xa,R24
	.dbline 21
;     SEI(); 
	sei
	.dbline 22
; 	return 0x30;
	ldi R16,48
	ldi R17,0
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Uart_Transmit _Uart_Transmit fV
;           data -> R16
	.even
_Uart_Transmit::
	.dbline -1
	.dbline 32
; }
; 
; /*************************************************
;  函数名称:void Us0Transmit (unsigned char data)
;  函数功能:发送数据
;  入口参数:unsigned char data
;  出口参数:无
; *************************************************/
; void Uart_Transmit (unsigned char data)
; {
L3:
	.dbline 33
L4:
	.dbline 33
; 	while ( !(UCSRA & (1<<UDRE)));            //等待UDR为空
	sbis 0xb,5
	rjmp L3
	.dbline 34
; 	UDR = data;
	out 0xc,R16
	.dbline -2
L2:
	.dbline 0 ; func end
	ret
	.dbsym r data 16 c
	.dbend
	.area vector(rom, abs)
	.org 22
	rjmp _UartRxIsr
	.area text(rom, con, rel)
	.dbfile G:\CH452L\main.c
	.dbfunc e UartRxIsr _UartRxIsr fV
	.even
_UartRxIsr::
	st -y,R0
	in R0,0x3f
	st -y,R0
	.dbline -1
	.dbline 42
; }
; 
; //UART中断接收服务函数,形如 04 xx 02 xx (xx xx)
; //其中04为接收的标志,02为接收的长度(可变),括号里的为数据
; //接收成功后,置位Us0RCoF,接收到的数据保存在Us0BufRec中,保存的数据是整个数据包
; #pragma interrupt_handler UartRxIsr:12
; void UartRxIsr(void)
; {
	.dbline 45
;      //unsigned char temp;
; 	 //temp = UDR;                                            //取出数据 
; 	 asm("nop");
	nop
	.dbline -2
L6:
	ld R0,y+
	out 0x3f,R0
	ld R0,y+
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e main _main fV
;              i -> <dead>
;           temp -> R20
	.even
_main::
	.dbline -1
	.dbline 49
; }
; 
; void main(void)
; {
	.dbline 51
;    	unsigned char temp,i;
; 	Init_Int0();
	rcall _Init_Int0
	.dbline 52
; 	Delay_Nus(5);
	ldi R16,5
	ldi R17,0
	rcall _Delay_Nus
	.dbline 53
; 	Init_Uart();
	rcall _Init_Uart
	.dbline 54
; 	Delay_Nus(5);
	ldi R16,5
	ldi R17,0
	rcall _Delay_Nus
	.dbline 55
; 	Init_Ch452lport();
	rcall _Init_Ch452lport
	.dbline 56
; 	Delay_Nus(5);
	ldi R16,5
	ldi R17,0
	rcall _Delay_Nus
	.dbline 57
; 	Init_Ch452lsystem();
	rcall _Init_Ch452lsystem
	.dbline 58
; 	Delay_Nms(1500);
	ldi R16,1500
	ldi R17,5
	rcall _Delay_Nms
	.dbline 59
; 	Display_Ch452lBCD(8,BCDdata);
	ldi R18,<_BCDdata
	ldi R19,>_BCDdata
	ldi R16,8
	rcall _Display_Ch452lBCD
	.dbline 60
; 	Delay_Nms(20);  //延时
	ldi R16,20
	ldi R17,0
	rcall _Delay_Nms
	rjmp L9
L8:
	.dbline 63
; 			
; 	while(1)
; 	{
	.dbline 64
; 	    if(flag==1)
	lds R24,_flag
	lds R25,_flag+1
	cpi R24,1
	ldi R30,0
	cpc R25,R30
	brne L11
	.dbline 65
; 		{
	.dbline 66
; 		    temp=Read_Keycode();
	rcall _Read_Keycode
	mov R20,R16
	.dbline 67
; 			Uart_Transmit(0x02);
	ldi R16,2
	rcall _Uart_Transmit
	.dbline 68
; 			Uart_Transmit(temp);
	mov R16,R20
	rcall _Uart_Transmit
	.dbline 69
; 			flag=0;
	clr R2
	clr R3
	sts _flag+1,R3
	sts _flag,R2
	.dbline 70
; 		}
L11:
	.dbline 98
L9:
	.dbline 62
	rjmp L8
X0:
	.dbline -2
L7:
	.dbline 0 ; func end
	ret
	.dbsym l i 1 c
	.dbsym r temp 20 c
	.dbend

⌨️ 快捷键说明

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