Things to do with ISR
Allowing access to variables between source files is done using the extern keyword, for example in header file declaring a variable. If it's all in one file you can use a global variable. 

When you want an ISR to be able to change the variable (such as a flag) and have another routine recognize the change (perhaps by polling the flags periodically between doing other stuff), it's best to use the volatile keyword, which prevents the variable from being optimized out of the code (since otherwise the compiler does not see how it could change). 

See: https://stackoverflow.com/questions/1433204/how-do-i-share-a-variable-between-source-files-in-c-with-extern-but-how  for more info on extern

And: http://www.barrgroup.com/Embedded-Systems/How-To/C-Volatile-Keyword for more info on volatile