Use this to read a string on the HC12. What this function does is check to see if there is an available character in the HC12′s Serial Communication Interface Port 0 Data Register. If you need to use this function with 9bit values the function needs to be adjusted to incorporate SC0DRH. Similarity if you would like to use Port 1 change SC0 to SC1.
UPDATE: I added the single char version because thats more basic.
/******************************************* Get Character Usage: Get a character from the serial port Exit: Returns the char from the input *******************************************/ char Read(void) { //Wait for the Receive Data Register Full Flag of SC0SR1 while((SC0SR1 & 0x20) == 0) { //Yield or Wait } //Read the Data Register char input = SC0DRL; //Echo Print(input); //Return value return input; } /******************************************* Get String Usage: Gets a string from the serial Enter: Buffer address and max buffer size. Exit: True on Overflow, False on Return Key *******************************************/ bool Read(char* buffer, unsigned int size) { char input = '\0'; unsigned int i = 0; while ( i < size ) { //Wait for the Receive Data Register Full Flag of SC0SR1 while((SC0SR1 & 0x20) == 0) { //Yield or Wait } //Read the Data Register input = SC0DRL; if ( input == 0x08 && i > 0 ) { //Delete buffer[i--] = '\0'; } else if ( input == 0x0D ) { //Enter buffer[i] = '\0'; return false; } else { buffer[i++] = input; } //Echo Print(input); } return true; }

Hey have you gotten the mon12 commands to work within your code? I got the address from your blog entry, but I can’t seem to get it to respond with anything but “bad argument”.
I am assuming you want to use something like an “MD” Memory Display in your code. I haven’t done this myself but I would venture to guess you could acheve this in one of two ways.
OR
ldab 4000 jsr C9B6Really the way to tell is to dump C9B6 or the function that you want an run it through a HC12 Disassembler.