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

📄 time_m8.asm

📁 AVR开发板例子源代码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
            rjmp       rb1              ;转移
d1:         sec                         ;c=1
            ror        r18              ;带C循环右移,r18将放读出的数据
            nop
rb1:    	sbi        portc,0           ;clk=1
			nop
			nop
			cbi        portc,0           ;clk=0
			dec        r16              ;寄存器减1
            cpi        r16,0            ;与立即数0比较
			brne       rb0              ;不为0,继续发送下一位。
			ret
;---------------------------------








;----数据分开,并分别装入相应的显示存储器中,时,分,秒-------------------
moin1:      mov          r16,r0          ;秒
            cbr          r16,0xf0
			mov          r27,r16
            swap         r0
			mov          r16,r0
			cbr          r16,0xf0
			mov          r26,r16
  
            mov          r16,r1          ;分
			cbr          r16,0xf0
			mov          r24,r16
			swap         r1
			mov          r16,r1
			cbr          r16,0xf0
			mov          r23,r16

			mov          r16,r2          ;时
			cbr          r16,0xf0
			mov          r21,r16
			swap         r2
			mov          r16,r2
			cbr          r16,0xf0
			mov          r20,r16

			ldi          r22,16         ;-
			ldi          r25,16         ;-

			ret
;----数据分开,并分别装入相应的显示存储器中,年,月,日-------------------
moin2:      mov          r16,r3          ;日
            cbr          r16,0xf0
			mov          r27,r16
            swap         r3
			mov          r16,r3
			cbr          r16,0xf0
			mov          r26,r16

            mov          r16,r4          ;月
			cbr          r16,0xf0
			mov          r24,r16
			swap         r5
			mov          r16,r5
			cbr          r16,0xf0
			mov          r23,r16

                                         ;r5存的是星期值。

			mov          r16,r6          ;年
			cbr          r16,0xf0
			mov          r21,r16
			swap         r6
			mov          r16,r6
			cbr          r16,0xf0
			mov          r20,r16

			ldi          r22,17         ;_
			ldi          r25,17         ;_

			ret            



;----------r20-r29单元是显示存储区,只要把数据装入这些寄存器,调动态扫描程序就可以显示了。
datin:      ldi        r20,0            ;0
			ldi        r21,0            ;0
			ldi        r22,16           ;-
			ldi        r23,0            ;0
			ldi        r24,0            ;0
			ldi        r25,16           ;-
			ldi        r26,0            ;0
			ldi        r27,0            ;0
			ret
;################led动态扫描显示子程序,使用前把显示数据装入显示存储器中###使用145############
;可显示的字符包括:0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F、-、_、P、X、
display:	ldi        r16,0B10000000      ;作共阴的公共脚。
			out        portd,r16           ;位号,第1位。
			mov        r16,r20             ;数据1
			rcall      dxaa                ;显示
     ;----------------------------
            ldi        r16,0B10010000
			out        portd,r16           ;位号,第2位。
			mov        r16,r21             ;数据2
			rcall      dxaa                ;显示 
     ;----------------------------
            ldi        r16,0B10100000
			out        portd,r16           ;位号,第3位。
			mov        r16,r22             ;数据3
			rcall      dxaa                ;显示 
     ;----------------------------
            ldi        r16,0B10110000
			out        portd,r16           ;位号,第4位。
			mov        r16,r23             ;数据4
			rcall      dxaa                ;显示 
     ;----------------------------
            ldi        r16,0B11000000
			out        portd,r16           ;位号,第5位。
			mov        r16,r24             ;数据5
			rcall      dxaa                ;显示 
     ;----------------------------
            ldi        r16,0B11010000
			out        portd,r16           ;位号,第6位。
			mov        r16,r25             ;数据6
			rcall      dxaa                ;显示 
    ;----------------------------
            ldi        r16,0B11100000
			out        portd,r16           ;位号,第7位。
			mov        r16,r26             ;数据7
			rcall      dxaa                ;显示 
     ;----------------------------
            ldi        r16,0B11110000
			out        portd,r16           ;位号,第8位。
			mov        r16,r27             ;数据8
			rcall      dxaa                ;显示 
      ;----------------------------
			ret
      ;------取码/延迟/消隐多功能程序---------
dxaa:       ldi        zh, high(Table_1<<1); 初始化Z指针
            ldi        zl, low(Table_1<<1)
            clc                            ;清进位标志
			add        r30,r16             ;r16放的是要显示的数据,处理低字节数据
            clr        r16                 ;r16清0
			adc        r31,r16             ;处理高字节数据
            lpm        r16,z               ;从程序存储器中装入Z指针(r31:r30)指向的常量
			out        portb,r16
			rcall      londel              ;长延时
            ser        r16                 ;消隐
			out        portb,r16
			rcall      del
			ret
        ;------------------------
Table_1:
.db  0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E,0xBF,0xF7,0x8C,0xFF
;共阳  0   1    2     3   4    5     6    7    8    9   A    b    C    d    E    F    -    _    P    X
;***************************************************************************************************
;.db  0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x40,0x08,0x73,0x00
;共阴  0   1    2     3   4    5     6    7    8    9   A    b    C    d    E    F    -    _    P    X
;***************************************************************************************************



;#################短延迟程序##################
del:        ldi        r16,0x1f ;使用内部1MHzRC震荡器
del1:       dec        r16               
            brne       del1            
			nop
			ret
;###################钳套的延迟程序################
londel:     ldi        r17,0x08
del2:       rcall      del
            rcall      del
            dec        r17
			brne       del2
            ret
;##################end###############

⌨️ 快捷键说明

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