Hi tea for 1 -
I haven't read all the answers in the entirety but I think what may be missing (although not completely clear) is whether your son appreciates place value. That the numbers in the right most column represent units - and those numbers can only be 0 - 9, that the numbers in the next column to the left represent tens, the next column to the left hundreds, etc... - and that in each column you can only use the numbers 0 - 9.
in effect this is teaching base 10. That to represent ten of something in this counting system is indicated by a 0 in the units column and a 1 in the tens column.
10 in base 2 (where you only have 0 or 1 - binary code) would be 1010 - more info here: www.mathsisfun.com/binary-digits.html
Visually we explained this by having bigger and smaller objects of similar type - so duplo blocks for tens and lego blocks for units/ grapes for tens and raisins for units.
This way taking 23 from 45 becomes two plates:
45 = 4 grapes and 5 raisins
23 = 2 grapes and 3 raisins
5 raisins take away 3 leaves 2 raisins
4 grapes take away 2 leaves 2 grapes
--------
So when it comes to a more tricky problem involving borrowing -
say 43 - 25 - get out your plates again
plate 1 (43): 4 grapes and 3 raisins
plate 2 (25): 2 grapes and 5 raisins
Well fairly immediately your child can see that they can't take 5 raisins from 3 raisins. So they're going to need more raisins.
They have lots of grapes and 1 grape = 10 raisins. So cash in one of the grapes (of the 43 - 4 grapes) and convert it to 10 raisins.
Now you have 13 raisins take away 5 raisins = which gives you 8 raisins.
Then you can deal with the grapes:
3 grapes (remember we converted one of the grapes to raisins from the 43) take away 2 grapes = which gives you 1 grapes.
so 1 grape + 8 raisins = 10 + 8 = 18.
-------
Woodlands junior school has a lot of links for place value practice.
The abacus bead game (bead numbers - midway down on the right hand side) helps you to really visualise what each column of a number stands for (so the number 138 = one hundred, 3 tens and 8 units). The spooky sequences games are also really helpful.
---
Finally - it may seem odd - but playing blackjack or '21' is brilliant practice for carrying with small numbers and mental addition. It really does help with adding numbers >10 and breaking through 20. After that it's a lot easier. We played open handed. Ace = 1, 2 - 9 as numbered, Jack/ Queen/King = 10. The object is to get as close to 21 or exactly 21 if you can - but if you go past 21 you're 'bust' and out of the game.
Each player is dealt two cards. They have to total their cards and then let the dealer know if they want another.
So say you are dealt a Jack and a 3. That's 13. So that's a long way off from 21 so you ask for another card.
If it's a 7 - that's brilliant you're on 20. Pretty close to 21 and so you may opt to stay there.
If it's a 9 - that's 22 and you've passed 21 and are now bust and out of the game.
once our DD1 was good with the counting - we played it the traditional way with no cards showing but the dealers.
------
With DD1 this was a painfully tricky stage and I had to work hard to be supportive and patient. But keep telling yourself they'll get there in the end. Our solution was to keep trying things in different ways until something worked for DD1.
HTH