网站建站教程,服装定制一般多少钱,自己做网站是不是需要写代码,猎头公司是啥意思AVR单片机控制8段LED数码管同时显示这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序#xff0c;控制一个两位的数码管同时显示字符(动态刷新)。用AVR- Studio-4 开发#xff0c;在AVR单片机Atmega48上调试通过。学习者可以举一反三应用到其他类型的单片机…AVR单片机控制8段LED数码管同时显示这是一个简单的供单片机入门学习者练习用的8段LED数码管控制汇编程序控制一个两位的数码管同时显示字符(动态刷新)。用AVR- Studio-4 开发在AVR单片机Atmega48上调试通过。学习者可以举一反三应用到其他类型的单片机芯片。arget M48 ;Crystal 8.0000Mhz.include “m48def.inc”.org $0000 rjmp _main.org $0020_port_init; 端口初始化clr R2out 0x5R2 PortB清零ldi R24255out 0x4R24 定义PortB为输出out 0x8R2 PortC清零ldi R243out 0x7R24 定义PortC.0Portc.1为输出ret_tabs;字形定义.dw 192 0xC0“0”.dw 249 0xF9“1”.dw 164 0xA4“2”.dw 176 0xB0“3”.dw 153 0x99“4”.dw 146 0x92“5”.dw 130 0x82“6”.dw 248 0xF8“7”.dw 128 0x80“8”.dw 152 0x98“9”.dw 136 0x88“A”.dw 131 0x83“B”.dw 198 0xC6“C”.dw 161 0xA1“D”.dw 134 0x86“E”.dw 142 0x8E“F”.dw 255 0xFF“8.”_delay_1ms 延时子程ldi R161ldi R170L3subi R16255 加1操作sbci R17255cpi R16232 0xE8ldi R303 0x3E8 1000cpc R17R30brlo L3 未达1000继续ret_delaypush r21push r20push r17 入口r16r17装的是延时参数push r16movw R10R16 将r16r17的内容装入r10r11clr R20clr R21L8rcall _delay_1mssubi R20255 加1操作sbci R21255cp R20R10 与指定延时参数比较cpc R21R11brlo L8 未达指定延时参数继续pop r16pop r17pop r20pop r21ret_led_displaypush R20 寄存器r20入栈r20中带入字符表的索引ldi R242mul R24R20 将r20中的值乘2结果在r0中movw R30R0 将r0的值赋给r30作为偏移量ldi R24low(_tabs1) 获取字符表基地址ldi R25high(_tabs1)add R30R24 偏移量基地址构成z指针adc R31R25lpm R20Z0 取字型送入r20 out 0x5R20 字型送PortB输出 ldi R220 循环100次计数寄存器r22清零L10ldi R201 r20用于8LED数码管输出位控制初始为1L12out 0x8R20 将8LED数码管位控制输出到端口PortC ldi R1610 延时参数低位ldi R170 延时参数高位rcall _delay 调延时子程inc R20 移位r20准备显示另一位cpi R203 判两位是否显示完brlo L12 未显示完两位继续inc R22 r22加1cpi R22100 判是否已计满100 brlo L10 未计满则继续pop R20 r20出栈 ret _mainclr R20 初始化计数寄存器r20 rcall _port_init 初始化端口L17cpi R2016 比较循环计数brne L21 未显示完16个字符继续clr R20 从新开始L21rcall _led_display 显示字符inc R20 计数值加1rjmp L17 返回ret