VT3_Mario_Sekulić
Dependencies: mbed
main.cpp@0:2f783aa11c1d, 2016-11-17 (annotated)
- Committer:
- msekulic
- Date:
- Thu Nov 17 18:02:44 2016 +0000
- Revision:
- 0:2f783aa11c1d
VT3_Mario_Sekuli?
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
msekulic | 0:2f783aa11c1d | 1 | |
msekulic | 0:2f783aa11c1d | 2 | // main program code for Exercise 7-6 |
msekulic | 0:2f783aa11c1d | 3 | #include "mbed.h" |
msekulic | 0:2f783aa11c1d | 4 | Serial pc(USBTX, USBRX); // comms to host PC |
msekulic | 0:2f783aa11c1d | 5 | BusOut Seg1(p5,p6,p7,p8,p9,p10,p11,p12); // A,B,C,D,E,F,G,DP |
msekulic | 0:2f783aa11c1d | 6 | BusOut Seg2(p13,p14,p15,p16,p17,p18,p19,p20); // A,B,C,D,E,F,G,DP |
msekulic | 0:2f783aa11c1d | 7 | void SegInit(void); // function prototype |
msekulic | 0:2f783aa11c1d | 8 | void HostInit(void); // function prototype |
msekulic | 0:2f783aa11c1d | 9 | char GetKeyInput(void); // function prototype |
msekulic | 0:2f783aa11c1d | 10 | char SegConvert(char SegValue); // function prototype |
msekulic | 0:2f783aa11c1d | 11 | char data1, data2; // variable declarations |
msekulic | 0:2f783aa11c1d | 12 | int main() // main program |
msekulic | 0:2f783aa11c1d | 13 | { |
msekulic | 0:2f783aa11c1d | 14 | SegInit(); // call function to initialise the 7-seg displays |
msekulic | 0:2f783aa11c1d | 15 | HostInit(); // call function to initialise the host terminal |
msekulic | 0:2f783aa11c1d | 16 | while (1) { // infinite loop |
msekulic | 0:2f783aa11c1d | 17 | data2 = GetKeyInput(); // call function to get 1st key press |
msekulic | 0:2f783aa11c1d | 18 | Seg2=SegConvert(data2); // call function to convert and output |
msekulic | 0:2f783aa11c1d | 19 | data1 = GetKeyInput(); // call function to get 2nd key press |
msekulic | 0:2f783aa11c1d | 20 | Seg1=SegConvert(data1); // call function to convert and output |
msekulic | 0:2f783aa11c1d | 21 | pc.printf(" "); // display spaces between 2 digit numbers |
msekulic | 0:2f783aa11c1d | 22 | } |
msekulic | 0:2f783aa11c1d | 23 | } |
msekulic | 0:2f783aa11c1d | 24 | // functions for Exercise 7-6 |
msekulic | 0:2f783aa11c1d | 25 | void SegInit(void) |
msekulic | 0:2f783aa11c1d | 26 | { |
msekulic | 0:2f783aa11c1d | 27 | Seg1=SegConvert(0); // initialise to zero |
msekulic | 0:2f783aa11c1d | 28 | Seg2=SegConvert(0); // initialise to zero |
msekulic | 0:2f783aa11c1d | 29 | } |
msekulic | 0:2f783aa11c1d | 30 | void HostInit(void) |
msekulic | 0:2f783aa11c1d | 31 | { |
msekulic | 0:2f783aa11c1d | 32 | pc.printf("\n\rType two digit numbers to be displayed on the 7-seg display\n\r"); |
msekulic | 0:2f783aa11c1d | 33 | } |
msekulic | 0:2f783aa11c1d | 34 | char GetKeyInput(void) |
msekulic | 0:2f783aa11c1d | 35 | { |
msekulic | 0:2f783aa11c1d | 36 | char c = pc.getc(); // get keyboard data (note num. ascii range 0x30-0x39) |
msekulic | 0:2f783aa11c1d | 37 | pc.printf("%c",c); // print ascii value to host PC terminal |
msekulic | 0:2f783aa11c1d | 38 | return (c&0x0F); // return value as non-ascii (bitmask c with value 0x0F) |
msekulic | 0:2f783aa11c1d | 39 | } |
msekulic | 0:2f783aa11c1d | 40 | char SegConvert(char SegValue) // function 'SegConvert' |
msekulic | 0:2f783aa11c1d | 41 | { |
msekulic | 0:2f783aa11c1d | 42 | char SegByte=0x00; |
msekulic | 0:2f783aa11c1d | 43 | switch (SegValue) { //DPGFEDCBA |
msekulic | 0:2f783aa11c1d | 44 | case 0 : |
msekulic | 0:2f783aa11c1d | 45 | SegByte = 0x3F; |
msekulic | 0:2f783aa11c1d | 46 | break; // 00111111 binary |
msekulic | 0:2f783aa11c1d | 47 | case 1 : |
msekulic | 0:2f783aa11c1d | 48 | SegByte = 0x06; |
msekulic | 0:2f783aa11c1d | 49 | break; // 00000110 binary |
msekulic | 0:2f783aa11c1d | 50 | case 2 : |
msekulic | 0:2f783aa11c1d | 51 | SegByte = 0x5B; |
msekulic | 0:2f783aa11c1d | 52 | break; // 01011011 binary |
msekulic | 0:2f783aa11c1d | 53 | case 3 : |
msekulic | 0:2f783aa11c1d | 54 | SegByte = 0x4F; |
msekulic | 0:2f783aa11c1d | 55 | break; // 01001111 binary |
msekulic | 0:2f783aa11c1d | 56 | case 4 : |
msekulic | 0:2f783aa11c1d | 57 | SegByte = 0x66; |
msekulic | 0:2f783aa11c1d | 58 | break; // 01100110 binary |
msekulic | 0:2f783aa11c1d | 59 | case 5 : |
msekulic | 0:2f783aa11c1d | 60 | SegByte = 0x6D; |
msekulic | 0:2f783aa11c1d | 61 | break; // 01101101 binary |
msekulic | 0:2f783aa11c1d | 62 | case 6 : |
msekulic | 0:2f783aa11c1d | 63 | SegByte = 0x7D; |
msekulic | 0:2f783aa11c1d | 64 | break; // 01111101 binary |
msekulic | 0:2f783aa11c1d | 65 | case 7 : |
msekulic | 0:2f783aa11c1d | 66 | SegByte = 0x07; |
msekulic | 0:2f783aa11c1d | 67 | break; // 00000111 binary |
msekulic | 0:2f783aa11c1d | 68 | case 8 : |
msekulic | 0:2f783aa11c1d | 69 | SegByte = 0x7F; |
msekulic | 0:2f783aa11c1d | 70 | break; // 01111111 binary |
msekulic | 0:2f783aa11c1d | 71 | case 9 : |
msekulic | 0:2f783aa11c1d | 72 | SegByte = 0x6F; |
msekulic | 0:2f783aa11c1d | 73 | break; // 01101111 binary |
msekulic | 0:2f783aa11c1d | 74 | } |
msekulic | 0:2f783aa11c1d | 75 | return SegByte; |
msekulic | 0:2f783aa11c1d | 76 | } |