📄 io.lis
字号:
.module io.c
.area text(rom, con, rel)
0000 .dbfile E:\avr\2.1.5\io.c
0000 .dbfunc e main _main fV
.even
0000 _main::
0000 .dbline -1
0000 .dbline 8
0000 ; // 用途:理解AVR的端口操作,学习在AVR studio里面观查IO口状态
0000 ; // 连接:电源跳线,PB0接一个按键,PA口0~7接7段数码管的a~dp,7段数码管的ABCD接VCC
0000 ; // 注意:直接全速运行本程序,没有现实意义,请通过JTAG在线仿真,看各个IO口的状态,并且看数码管上的显示。
0000 ;
0000 ; #include <iom16v.h>
0000 ;
0000 ; void main(void)
0000 ; {
0000 .dbline 9
0000 ; PORTA=0xff;
0000 8FEF ldi R24,255
0002 8BBB out 0x1b,R24
0004 .dbline 10
0004 ; DDRA=0xff; //输出 模式 ,IO口上,1为输出,0为输入。
0004 8ABB out 0x1a,R24
0006 22C0 xjmp L3
0008 L2:
0008 .dbline 13
0008 ;
0008 ; while(1)
0008 ; {
0008 .dbline 14
0008 ; PORTA = 0xf0; //等于 结果是:1111 0000
0008 80EF ldi R24,240
000A 8BBB out 0x1b,R24
000C .dbline 15
000C ; PORTA &=~ 0xf0; //清零 结果是:0000 0000
000C 8BB3 in R24,0x1b
000E 8F70 andi R24,15
0010 8BBB out 0x1b,R24
0012 .dbline 16
0012 ; PORTA |= 0x77; //置一 结果是:0111 0111
0012 8BB3 in R24,0x1b
0014 8767 ori R24,119
0016 8BBB out 0x1b,R24
0018 .dbline 17
0018 ; PORTA ^= 0x70; //翻转 结果是:0000 0111
0018 80E7 ldi R24,112
001A 2BB2 in R2,0x1b
001C 2826 eor R2,R24
001E 2BBA out 0x1b,R2
0020 .dbline 18
0020 ; PORTA = 0x00; //全部清零
0020 2224 clr R2
0022 2BBA out 0x1b,R2
0024 .dbline 21
0024 ;
0024 ; //下面理解下移位算法
0024 ; PORTA |=(1<<PA7); //PA7置1,结果是 1000 0000
0024 DF9A sbi 0x1b,7
0026 .dbline 22
0026 ; PORTA = ((1<<PA4)|(1<<PA5)|(1<<PA6)); // PA4 5 6置一,结果为 0011 1000
0026 8BBB out 0x1b,R24
0028 .dbline 23
0028 ; PORTA &=~((1<<PA4)|(1<<PA5)); //PA 4 5 清零, 结果为 0010 0000
0028 8BB3 in R24,0x1b
002A 8F7C andi R24,207
002C 8BBB out 0x1b,R24
002E .dbline 24
002E ; PORTA ^= ((1<<PA5)|(1<<PA6)); //PA5 PA6 取反,结果为 0001 0000
002E 80E6 ldi R24,96
0030 2BB2 in R2,0x1b
0032 2826 eor R2,R24
0034 2BBA out 0x1b,R2
0036 .dbline 27
0036 ;
0036 ; //下面理解下输入
0036 ; DDRB=0x01; //PB0 接个按键
0036 81E0 ldi R24,1
0038 87BB out 0x17,R24
003A .dbline 28
003A ; if((PINB&0x01)==0x01)
003A 86B3 in R24,0x16
003C 8170 andi R24,1
003E 8130 cpi R24,1
0040 19F4 brne L5
0042 .dbline 29
0042 ; { //PB0为高,没有键盘按下
0042 .dbline 30
0042 ; PORTA =0x00;
0042 2224 clr R2
0044 2BBA out 0x1b,R2
0046 .dbline 31
0046 ; }
0046 02C0 xjmp L6
0048 L5:
0048 .dbline 33
0048 ; else
0048 ; { //PB0为低,按键按下
0048 .dbline 34
0048 ; PORTA =0xFF;
0048 8FEF ldi R24,255
004A 8BBB out 0x1b,R24
004C .dbline 35
004C ; }
004C L6:
004C .dbline 36
004C L3:
004C .dbline 12
004C DDCF xjmp L2
004E X0:
004E .dbline -2
004E L1:
004E .dbline 0 ; func end
004E 0895 ret
0050 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -