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

📄 io.lis

📁 一个关于AVR单片机的例程
💻 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 + -