Skip to content

Commit

Permalink
Implement problem 1
Browse files Browse the repository at this point in the history
  • Loading branch information
mohammadT77 committed Dec 16, 2020
1 parent b833b58 commit 4c1b6cc
Show file tree
Hide file tree
Showing 20 changed files with 800 additions and 494 deletions.
215 changes: 145 additions & 70 deletions Assignment 2/src/Debug/Exe/mp-lab-a2.a
Original file line number Diff line number Diff line change
Expand Up @@ -48,196 +48,271 @@
;PCODE: $0000000C VOL: 0
;
;// Declare your global variables here
;static unsigned int timer_count = 0;
;//static unsigned int timer0_count = 0;
;static unsigned int timer1_count = 0;
;static int active_port = 0;
;static unsigned int timer = 0;
;
;char bcd_encode(int num){
; 0000 001E char bcd_encode(int num){
; 0000 0020 char bcd_encode(int num){

.CSEG
;PCODE: $0000000D VOL: 0
;PCODE: $0000000E VOL: 0
; 0000 001F switch (num){
; 0000 0021 switch (num){
;PCODE: $0000000F VOL: 0
; num -> Y+0
;PCODE: $00000010 VOL: 0
; 0000 0020 case 0: return 0b0111111;
; 0000 0022 case 0: return 0b0111111;
;PCODE: $00000011 VOL: 0
;PCODE: $00000012 VOL: 0
;PCODE: $00000013 VOL: 0
;PCODE: $00000014 VOL: 0
;PCODE: $00000015 VOL: 0
; 0000 0021 case 1: return 0b0000110;
; 0000 0023 case 1: return 0b0000110;
;PCODE: $00000016 VOL: 0
;PCODE: $00000017 VOL: 0
;PCODE: $00000018 VOL: 0
;PCODE: $00000019 VOL: 0
;PCODE: $0000001A VOL: 0
;PCODE: $0000001B VOL: 0
; 0000 0022 case 2: return 0b1011011;
; 0000 0024 case 2: return 0b1011011;
;PCODE: $0000001C VOL: 0
;PCODE: $0000001D VOL: 0
;PCODE: $0000001E VOL: 0
;PCODE: $0000001F VOL: 0
;PCODE: $00000020 VOL: 0
;PCODE: $00000021 VOL: 0
; 0000 0023 case 3: return 0b1001111;
; 0000 0025 case 3: return 0b1001111;
;PCODE: $00000022 VOL: 0
;PCODE: $00000023 VOL: 0
;PCODE: $00000024 VOL: 0
;PCODE: $00000025 VOL: 0
;PCODE: $00000026 VOL: 0
;PCODE: $00000027 VOL: 0
; 0000 0024 case 4: return 0b1100110;
; 0000 0026 case 4: return 0b1100110;
;PCODE: $00000028 VOL: 0
;PCODE: $00000029 VOL: 0
;PCODE: $0000002A VOL: 0
;PCODE: $0000002B VOL: 0
;PCODE: $0000002C VOL: 0
;PCODE: $0000002D VOL: 0
; 0000 0025 case 5: return 0b1101101;
; 0000 0027 case 5: return 0b1101101;
;PCODE: $0000002E VOL: 0
;PCODE: $0000002F VOL: 0
;PCODE: $00000030 VOL: 0
;PCODE: $00000031 VOL: 0
;PCODE: $00000032 VOL: 0
;PCODE: $00000033 VOL: 0
; 0000 0026 case 6: return 0b1111101;
; 0000 0028 case 6: return 0b1111101;
;PCODE: $00000034 VOL: 0
;PCODE: $00000035 VOL: 0
;PCODE: $00000036 VOL: 0
;PCODE: $00000037 VOL: 0
;PCODE: $00000038 VOL: 0
;PCODE: $00000039 VOL: 0
; 0000 0027 case 7: return 0b0000000;
; 0000 0029 case 7: return 0b0000111;
;PCODE: $0000003A VOL: 0
;PCODE: $0000003B VOL: 0
;PCODE: $0000003C VOL: 0
;PCODE: $0000003D VOL: 0
;PCODE: $0000003E VOL: 0
;PCODE: $0000003F VOL: 0
; 0000 0028 case 8: return 0b0111111;
; 0000 002A case 8: return 0b1111111;
;PCODE: $00000040 VOL: 0
;PCODE: $00000041 VOL: 0
;PCODE: $00000042 VOL: 0
;PCODE: $00000043 VOL: 0
;PCODE: $00000044 VOL: 0
;PCODE: $00000045 VOL: 0
; 0000 0029 case 9: return 0b1111111;
; 0000 002B case 9: return 0b1101111;
;PCODE: $00000046 VOL: 0
;PCODE: $00000047 VOL: 0
;PCODE: $00000048 VOL: 0
;PCODE: $00000049 VOL: 0
;PCODE: $0000004A VOL: 0
;PCODE: $0000004B VOL: 0
; 0000 002A }
; 0000 002C }
;PCODE: $0000004C VOL: 0
; 0000 002B }
; 0000 002D }
;PCODE: $0000004D VOL: 0
;PCODE: $0000004E VOL: 0
;PCODE: $0000004F VOL: 0
;
;void timer_tick_procedure(){
; 0000 002D void timer_tick_procedure(){
;void timer0_tick_procedure(){
; 0000 002F void timer0_tick_procedure(){
;PCODE: $00000050 VOL: 0
;PCODE: $00000051 VOL: 0
; 0000 002E
; 0000 002F }
; 0000 0030 if (active_port>=4)
;PCODE: $00000052 VOL: 0
;PCODE: $00000053 VOL: 0
;
;// Timer 0 overflow interrupt service routine
;interrupt [TIM0_OVF] void timer0_ovf_isr(void)
; 0000 0033 {
;PCODE: $00000054 VOL: 0
; 0000 0031 active_port = 0;
;PCODE: $00000055 VOL: 0
; 0000 0034
; 0000 0035 TCNT0=0x9C; // Timer overflow : 1 ms
;PCODE: $00000056 VOL: 0
; 0000 0032 PORTC = 0x0F & ~(1<<active_port);
;PCODE: $00000057 VOL: 0
; 0000 0036 ++timer_count;
;PCODE: $00000058 VOL: 0
;PCODE: $00000059 VOL: 0
;PCODE: $0000005A VOL: 0
;PCODE: $0000005B VOL: 0
; 0000 0037
; 0000 0038 if (timer_count==1000) { // Timer tick : 1s
;PCODE: $0000005C VOL: 0
;PCODE: $0000005D VOL: 0
; 0000 0033 active_port++;
;PCODE: $0000005E VOL: 0
; 0000 0039 timer_tick_procedure();
;PCODE: $0000005F VOL: 0
; 0000 003A //PORTD = bcd_encode(++timer);
; 0000 003B timer_count=0;
;PCODE: $00000060 VOL: 0
;PCODE: $00000061 VOL: 0
; 0000 003C }
; 0000 003D
; 0000 003E
; 0000 003F }
; 0000 0034 }
;PCODE: $00000062 VOL: 0
;PCODE: $00000063 VOL: 0
;
;void timer1_tick_procedure(){
; 0000 0036 void timer1_tick_procedure(){
;PCODE: $00000064 VOL: 0
;PCODE: $00000065 VOL: 0
;
;void main(void)
; 0000 0042 {
; 0000 0037 PORTD = bcd_encode(timer++);
;PCODE: $00000066 VOL: 0
; 0000 0043 // Declare your local variables here
; 0000 0044
; 0000 0045 DDRC= 0x0F;
;PCODE: $00000067 VOL: 0
;PCODE: $00000068 VOL: 0
; 0000 0046 DDRD= 0xFF;
;PCODE: $00000069 VOL: 0
;PCODE: $0000006A VOL: 0
; 0000 0047
; 0000 0048 // Timer/Counter 0 initialization
; 0000 0049 // Clock source: System Clock
; 0000 004A // Clock value: 1000.000 kHz
; 0000 004B // Mode: Normal top=0xFF
; 0000 004C // OC0 output: Disconnected
; 0000 004D // Timer Period: 0.1 ms
; 0000 004E TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (1<<CS01) | (0<<CS00);
;PCODE: $0000006B VOL: 0
;PCODE: $0000006C VOL: 0
; 0000 004F TCNT0=0x9C;
;PCODE: $0000006D VOL: 0
; 0000 0038 if (timer>=10)
;PCODE: $0000006E VOL: 0
; 0000 0050 OCR0=0x00;
;PCODE: $0000006F VOL: 0
;PCODE: $00000070 VOL: 0
; 0000 0051
; 0000 0052 // Timer(s)/Counter(s) Interrupt(s) initialization
; 0000 0053 TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (0<<TOIE1) | (0<<OCIE0) | (1<<TOIE0);
; 0000 0039 timer=0;
;PCODE: $00000071 VOL: 0
;PCODE: $00000072 VOL: 0
; 0000 0054
; 0000 0055 //MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
; 0000 0056 //MCUCSR=(0<<ISC2);
; 0000 0057
; 0000 0058 // Global enable interrupts
; 0000 0059 #asm("sei")
; 0000 003A }
;PCODE: $00000073 VOL: 0
sei
;PCODE: $00000074 VOL: 0
; 0000 005A
; 0000 005B while (1)
;PCODE: $00000075 VOL: 0
; 0000 005C {
; 0000 005D // Place your code here
; 0000 005E PORTC = 0;
;
;// Timer 0 overflow interrupt service routine
;interrupt [TIM0_OVF] void timer0_ovf_isr(void)
; 0000 003E {
;PCODE: $00000076 VOL: 0
;PCODE: $00000077 VOL: 0
; 0000 005F PORTD = bcd_encode(6);
; 0000 003F
; 0000 0040 TCNT0=256-100; // Timer overflow : 0.1 ms
;PCODE: $00000078 VOL: 0
;PCODE: $00000079 VOL: 0
; 0000 0041 //timer0_tick_procedure();
; 0000 0042
; 0000 0043 }
;PCODE: $0000007A VOL: 0
;PCODE: $0000007B VOL: 0
; 0000 0060 }
;PCODE: $0000007C VOL: 0
;
;// Timer 1 overflow interrupt service routine
;interrupt [TIM1_OVF] void timer1_ovf_isr(void)
; 0000 0047 {
;PCODE: $0000007D VOL: 0
; 0000 0061 }
;PCODE: $0000007E VOL: 0
; 0000 0048
; 0000 0049 TCNT1H=0xE0;
;PCODE: $0000007F VOL: 0
;PCODE: $00000080 VOL: 0
; 0000 004A TCNT1L=0xC0;
;PCODE: $00000081 VOL: 0
;PCODE: $00000082 VOL: 0
; 0000 004B ++timer1_count;
;PCODE: $00000083 VOL: 0
;PCODE: $00000084 VOL: 0
;PCODE: $00000085 VOL: 0
;PCODE: $00000086 VOL: 0
; 0000 004C
; 0000 004D if (timer1_count==1000) { // Timer tick : 1s
;PCODE: $00000087 VOL: 0
;PCODE: $00000088 VOL: 0
;PCODE: $00000089 VOL: 0
; 0000 004E timer1_tick_procedure();
;PCODE: $0000008A VOL: 0
; 0000 004F timer1_count=0;
;PCODE: $0000008B VOL: 0
;PCODE: $0000008C VOL: 0
; 0000 0050 }
; 0000 0051
; 0000 0052
; 0000 0053 }
;PCODE: $0000008D VOL: 0
;PCODE: $0000008E VOL: 0
;PCODE: $0000008F VOL: 0
;PCODE: $00000090 VOL: 0
;
;
;void main(void)
; 0000 0057 {
;PCODE: $00000091 VOL: 0
; 0000 0058 // Declare your local variables here
; 0000 0059
; 0000 005A DDRC= 0x0F;
;PCODE: $00000092 VOL: 0
;PCODE: $00000093 VOL: 0
; 0000 005B DDRD= 0xFF;
;PCODE: $00000094 VOL: 0
;PCODE: $00000095 VOL: 0
; 0000 005C
; 0000 005D PORTC=0xFE;
;PCODE: $00000096 VOL: 0
;PCODE: $00000097 VOL: 0
; 0000 005E
; 0000 005F // Timer/Counter 0 initialization
; 0000 0060 // Clock source: System Clock
; 0000 0061 // Clock value: 1000.000 kHz
; 0000 0062 // Mode: Normal top=0xFF
; 0000 0063 // OC0 output: Disconnected
; 0000 0064 // Timer Period: 0.1 ms
; 0000 0065 TCCR0=(0<<WGM00) | (0<<COM01) | (0<<COM00) | (0<<WGM01) | (0<<CS02) | (1<<CS01) | (0<<CS00);
;PCODE: $00000098 VOL: 0
;PCODE: $00000099 VOL: 0
; 0000 0066 TCNT0=256-100;
;PCODE: $0000009A VOL: 0
;PCODE: $0000009B VOL: 0
; 0000 0067
; 0000 0068
; 0000 0069 // Timer/Counter 1 initialization
; 0000 006A // Clock source: System Clock
; 0000 006B // Clock value: 8000.000 kHz
; 0000 006C // Mode: Normal top=0xFFFF
; 0000 006D // Timer Period: 1 ms
; 0000 006E // Timer1 Overflow Interrupt: On
; 0000 006F TCCR1A=(0<<COM1A1) | (0<<COM1A0) | (0<<COM1B1) | (0<<COM1B0) | (0<<WGM11) | (0<<WGM10);
;PCODE: $0000009C VOL: 0
;PCODE: $0000009D VOL: 0
; 0000 0070 TCCR1B=(0<<ICNC1) | (0<<ICES1) | (0<<WGM13) | (0<<WGM12) | (0<<CS12) | (0<<CS11) | (1<<CS10);
;PCODE: $0000009E VOL: 0
;PCODE: $0000009F VOL: 0
; 0000 0071 TCNT1H=0xE0;
;PCODE: $000000A0 VOL: 0
;PCODE: $000000A1 VOL: 0
; 0000 0072 TCNT1L=0xC0;
;PCODE: $000000A2 VOL: 0
;PCODE: $000000A3 VOL: 0
; 0000 0073
; 0000 0074 // Timer(s)/Counter(s) Interrupt(s) initialization
; 0000 0075 TIMSK=(0<<OCIE2) | (0<<TOIE2) | (0<<TICIE1) | (0<<OCIE1A) | (0<<OCIE1B) | (1<<TOIE1) | (0<<OCIE0) | (1<<TOIE0);
;PCODE: $000000A4 VOL: 0
;PCODE: $000000A5 VOL: 0
; 0000 0076
; 0000 0077 //MCUCR=(0<<ISC11) | (0<<ISC10) | (0<<ISC01) | (0<<ISC00);
; 0000 0078 //MCUCSR=(0<<ISC2);
; 0000 0079
; 0000 007A // Global enable interrupts
; 0000 007B #asm("sei")
;PCODE: $000000A6 VOL: 0
sei
;PCODE: $000000A7 VOL: 0
; 0000 007C
; 0000 007D while (1);
;PCODE: $000000A8 VOL: 0
;PCODE: $000000A9 VOL: 0
;PCODE: $000000AA VOL: 0
; 0000 007E }
;PCODE: $000000AB VOL: 0
;PCODE: $000000AC VOL: 0
;PCODE: $000000AD VOL: 0
56 changes: 30 additions & 26 deletions Assignment 2/src/Debug/Exe/mp-lab-a2.hex
Original file line number Diff line number Diff line change
@@ -1,27 +1,31 @@
:080000000C942A000C9400008E
:100008000C9400000C9400000C9400000C94000068
:100018000C9400000C9400000C9400000C948500D3
:100028000C9400000C9400000C9400000C94000048
:100038000C9400000C9400000C9400000C94000038
:100048000C9400000C9400000C940000F894EE2727
:10005800ECBBF1E0FBBFEBBFE5BF8DE0A2E0BB2747
:10006800ED938A95E9F780E094E0A0E6ED93019797
:10007800E9F7EFE5EDBFE4E0EEBFC0E6D1E00C94B0
:10008800B700BA93AA93E881F981309711F4EFE3A6
:1000980035C0E130A0E0FA0711F4E6E02FC0E23005
:1000A800A0E0FA0711F4EBE529C0E330A0E0FA0775
:1000B80011F4EFE423C0E430A0E0FA0711F4E6E617
:1000C8001DC0E530A0E0FA0711F4EDE617C0E630F0
:1000D800A0E0FA0711F4EDE711C0E730A0E0FA0755
:1000E80011F4E0E00BC0E830A0E0FA0711F4EFE308
:1000F80005C0E930A0E0FA0709F4EFE72296089571
:1001080008950A921A92FA926A937A938A939A9322
:10011800AA93BA93EA93FA93EFB7EA93ECE9E2BFAA
:10012800A0E6B1E0ED91FD913196FE93EE93A0919A
:100138006001B0916101A83EE3E0BE0731F4E0DF61
:10014800E0E0E0936001E0936101E991EFBFF9918C
:10015800E991B991A9919991899179916991F990C8
:10016800199009901895EFE0E4BBEFEFE1BBE2E0EE
:10017800E3BFECE9E2BFE0E0ECBFE1E0E9BF78947F
:10018800E0E0E5BBA6E0B0E07CDFE2BBF9CFFFCF63
:060000000C942A000C9490
:1000060000000C9400000C9400000C9400000C946A
:1000160000000C9400000C9400000C94A0000C94BA
:100026009B000C9400000C9400000C9400000C94AF
:1000360000000C9400000C9400000C9400000C943A
:1000460000000C9400000C9400000C940000F8943E
:10005600EE27ECBBF1E0FBBFEBBFE5BF8DE0A2E016
:10006600BB27ED938A95E9F780E094E0A0E6ED934F
:100076000197E9F7EFE5EDBFE4E0EEBFC0E6D1E0BA
:100086000C94D400BA93AA93E881F981309711F4BD
:10009600EFE335C0E130A0E0FA0711F4E6E02FC047
:1000A600E230A0E0FA0711F4EBE529C0E330A0E066
:1000B600FA0711F4EFE423C0E430A0E0FA0711F4E4
:1000C600E6E61DC0E530A0E0FA0711F4EDE617C03C
:1000D600E630A0E0FA0711F4EDE711C0E730A0E042
:1000E600FA0711F4E7E00BC0E830A0E0FA0711F4D4
:1000F600EFE705C0E930A0E0FA0709F4EFE622963B
:100106000895A4E6B1E0ED91FD913196FE93EE934C
:100116003197DF01B7DFE2BBA0916401B0916501C1
:100126001A9728F0E0E0E0936401E09365010895F2
:10013600EA93ECE9E2BFE99118950A921A92FA92CB
:100146006A937A938A939A93AA93BA93EA93FA93C1
:10015600EFB7EA93E0EEEDBDE0ECECBDA0E6B1E072
:10016600ED91FD913196FE93EE93A0916001B091D1
:100176006101A83EE3E0BE0731F4C3DFE0E0E093AF
:100186006001E0936101E991EFBFF991E991B991BD
:10019600A9919991899179916991F990199009900C
:1001A6001895EFE0E4BBEFEFE1BBEEEFE5BBE2E075
:1001B600E3BFECE9E2BFE0E0EFBDE1E0EEBDE0EE7B
:1001C600EDBDE0ECECBDE5E0E9BF7894FFCFFFCFF5
:00000001FF
Binary file modified Assignment 2/src/Debug/Exe/mp-lab-a2.o
Binary file not shown.
Loading

0 comments on commit 4c1b6cc

Please sign in to comment.