Author: Not specified Language: asm
Description: Not specified Timestamp: 2017-09-25 08:45:00 +0000
View raw paste Reply
  1. /*
  2.  * lab2_blink_guannan.asm
  3.  *
  4.  *  Created: 9/18/2017 3:03:40 PM
  5.  *   Author: Micro_Lab
  6.  */
  7.  
  8.  .include "m328def.inc"
  9.  .org 0x0000
  10.                  RJMP begin // jump to begin
  11.  .org 0x0002
  12.                 RJMP interrupt1
  13.  .org 0x0034 //initialize the stack pointer
  14.  
  15.  begin:
  16.                                 cli  
  17.                 ldi    R16, low(RAMEND)
  18.                 out    SPL, R16 // set low stack
  19.                 ldi    R16, high(RAMEND)
  20.                 out    SPH, R16 // set high stack
  21.  
  22.                                 LDI R16, 0x00
  23.                                 STS 0x69, R16 ; set int1 and int0; emisk enabled interruption
  24.                                 LDI R16, 0x03
  25.                                 STS 0x3D, R16 ;set eicra to respective value; set it falling edge when button is pressed
  26.                                 SEI
  27.  
  28.                                 LDI  R16,  0xF0 ;ob11110000
  29.                                 OUT  DDRD,  R16 //set the output port
  30.  
  31.  toggle:        ldi    R16, 0xFF // the interupt is high, led on
  32.                 out    PORTD, R16
  33.                                 rcall  delay //call delay
  34.                 rjmp   toggle // tell the program jump to your interrupt service routine to start the loop
  35.                                  
  36. interrupt1: LDI R17,0x00 //led off
  37.                         OUT  PORTD, R17 // controled output
  38.                         RCALL delay2 // call delay2
  39.                         LDI R17, 0xF0 //led on
  40.                         OUT PORTD, R17
  41.                         RCALL delay2
  42.                         LDI R17,0x00
  43.                         OUT  PORTD, R17
  44.                         RCALL delay2
  45.                         LDI R17, 0xF0
  46.                         OUT PORTD, R17
  47.                         RCALL delay2
  48.                         LDI R17,0x00
  49.                         OUT  PORTD, R17
  50.                         RCALL delay2
  51.                         LDI R17, 0xF0
  52.                         OUT PORTD, R17
  53.                         RCALL delay2
  54.                         RETI
  55.  
  56. delay:          ldi  R20, 0x50
  57. loop3:          ldi  R19, 0xFF
  58. outloop:        ldi  R18, 0xFF
  59. innerloop:      dec  R18 //call innerloop when the dec is not equal to start the loop
  60.                 brne innerloop
  61.                                 dec  R19
  62.                                 brne outloop
  63.                                 dec R20
  64.                                 brne loop3
  65.                                 ret            
  66.  
  67. delay2:          ldi  R20, 0x10
  68. loop4:          ldi  R19, 0xFF
  69. outloop2:        ldi  R18, 0xFF
  70. innerloop2:      dec  R18
  71.                 brne innerloop2
  72.                                 dec  R19
  73.                                 brne outloop2
  74.                                 dec R20
  75.                                 brne loop4
  76.                                 ret            
View raw paste Reply